我試圖從文件中將用戶添加到系統中。該文件看起來完全是這樣的:帶循環的多個變量
[email protected] password 1
[email protected] baddpassword 2
這些數字是它們的ID。它來自一個MySQL數據庫,我需要對這些變量做些什麼,所以我需要4個變量。 USER,PASS,FIRSTID(是1)和LASTID(在這種情況下是mysql dump的最後一個ID,2.這是考慮一次超過2個入口)
到目前爲止我所擁有的是:
for USER in `cat /root/users_w_pass | sed -n '1!p' | awk [email protected] '{print $1}'`
do
for PASS in `cat /root/users_w_pass | sed -n '1!p' | awk -F ' ' '{print $2}'`
do
useradd $USER -d /home/$USER -m -s /home/$USER.sh
echo "$USER:$PASS" | chpasswd
done
done`
運行此,密碼不會被添加到相應的用戶,我對我應該如何做到這一點,因爲我認爲這是可行的,但我可以看到它是如何不不知道。另外,我需要做的不僅僅是將它們添加到系統中,而是爲每個文件創建文件併爲其分配ACL,因此在文件上運行newusers
將無法在此工作,特別是還有第三列。
你不應該在可以直接讀取它的程序中使用'cat',比如'sed'和'awk'。你不需要混合使用'sed'和'awk','awk'可以完成所有工作。你不應該使用舊的backtics,而是用括號代替'$(code)',這樣可以寫出第一行。 '用於$(awk -F @'NR> 1 {print $ 1}'/ root/users_w_pass)'的用戶' – Jotne
瞭解這一點。儘管如此,我仍然遇到了腳本的核心問題。我似乎無法分開for循環中的變量。我沒有讀過'while read',但在我的情況下不確定它的語法。謝謝。 – unixpipe
第二個循環可能是'for pass for $(awk'NR> 1 {print $ 2}'/ root/users_w_pass)' – Jotne