在 debian10 中將多個使用者新增至 1 個群組

在 debian10 中將多個使用者新增至 1 個群組

vi 使用者清單.txt

Tom
Josh
Noah

vi 新增群組.sh

#!/bin/bash
for user in 'cat userlist.txt'
do
sudo usermod -a -G vncuser $user
done

sh 新增群組.sh

Usage usermod [options] LOGIN

我該如何解決這個「使用 usermod [選項] 登入」錯誤?抱歉,我是這個初學者,提前致謝!

答案1

您正在循環“cat userlist.txt”而不是檔案的內容。這意味著 $user 將等於“cat”然後是“userlist.txt”。您可以新增以下日誌行:

echo "Adding user '$user' to group vncuser"

如何修復它:使用反引號 command或美元括號格式,如 $(command)。我更喜歡第二個,因為它更容易閱讀。

for user in $(egrep -v "^#|^$" userlist.txt); do
  echo "Adding user '$user' to group 'vncuser'"
  sudo usermod -a -G vncuser $user
done

我在這裡做了什麼?我使用egrep 過濾以# 開頭的行和空白行。

答案2

雙引號每行變數:

while IFS= read -r line
do
  sudo usermod -a -G vncuser "$line"
done <userlist.txt

chmod +x filename.sh然後在執行前先做一個。

答案3

第一步:您需要使用反引號(而不是單引號)或僅使用$()運算符

for user in $(cat userlist.txt) do
  sudo usermod -a -G vncuser $user
done

除此之外,你可能會得到空行,所以

for user in $(cat userlist.txt) do
  test -n "$user" && sudo usermod -a -G vncuser $user
done

最後廢除“貓”

while read user ; do
  test -n "$user" && sudo usermod -a -G vncuser $user
done <userlist.txt

相關內容