我有一個名為 Usernames.txt 的 txt 檔案,其中包含此類資訊(名稱后跟組型別)。例如(這些是少數實體,因為有更多的輸入。)
用戶名.txt:
ellipsiscoterie,visitor
magnetcommonest,visitor
belateddefensive,staff
wizardmeans,visitor
bobstercaramelize,staff
在下面顯示的腳本中,我嘗試將每一行的名稱添加為用戶并將每個新用戶分配到其各自的組。但是我遇到了這個錯誤。輸出不是我所想的。希望有人能幫幫我,謝謝。
基本上這就是我想要做的,但對于 txt 檔案中的每一行。例如sudo useradd bobstercaramelize(這是用戶名)和sudo usermod -a -G staff bobstercaremelize.
錯誤:
createUsers.sh: line 4: $'[visitor\r': command not found
代碼:
#!/bin/bash
while read line; do
arrIN=(${line//,/ })
if [${arrIN[1]} = "visitor" ]; then
sudo useradd ${arrIN[0]}
sudo usermod -a -G visitors ${arrIN[0]}
else
sudo useradd ${arrIN[0]}
sudo usermod -a -G staff ${arrIN[0]}
fi
done < Usernames.txt
uj5u.com熱心網友回復:
首先,錯誤似乎源于缺少空格:[${arrIN[1]} = "visitor" ]需要是[ ${arrIN[1]} = "visitor" ]. 注之間的空間[和${arrIN[1]}。
其次,\r錯誤訊息中的 表示Usernames.txt檔案的行尾可能存在問題。嘗試使用 Unix/Linux 行結尾保存它(即每行應\n僅以結尾)。
第三,您可能需要考慮以不同方式決議檔案的內容:
while IFS=, read user group; do
if [ "${group}" = "visitor" ]; then
sudo useradd "${user}"
sudo usermod -a -G visitors "${user}"
else
sudo useradd "${user}"
sudo usermod -a -G staff "${user}"
fi
done < Usernames.txt
這樣,read為您進行拆分,使事情變得更容易、更精確和更具可讀性。我還在適當的地方添加了雙引號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/323963.html
標籤:猛击
上一篇:獲取腳本時bash陷阱不起作用
