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