我想為 Usernames.txt 檔案中的每個 grep 正則運算式行創建一個變數。正文包含這個
mario,visitor
bobmarley,staff
luigi,visitor
hailey,visitor
等等。
我想要逗號之前的名稱作為用戶名,訪客作為用戶的組
#!/bin/bash
sudo addgroup visitor
sudo addgroup staff
filename='Usernames.txt'
while read line; do
username=$(echo $line | grep -o '^[a-z]*[^,]')
group=$(echo $line | grep -o '[^,][a-z]*$')
sudo useradd $username -G $group -p $username
done < $filename
但輸出顯示未找到命令用戶名。所以我嘗試了不太有效的方法
while read line; do
sudo useradd $(echo $line | grep -o '^[a-z]*[^,]') -G $(echo $line | grep -o '[^,][a-z]*$') -p $(echo $line | grep -o '^[a-z]*[^,]')
done < $filename
我希望每個回圈的結果是這樣的
sudo useradd mario -G visitor -p mario
我該如何改進?謝謝!
uj5u.com熱心網友回復:
試試這個方法
while read -r name role; do
sudo useradd $name -G $role -p $name
done < <(sed 's/,/ /' $filename)
其實sed就夠了:
sudo sed 's/\(.*\),\(.*\)/useradd \1 -G \2 -p \1/e' $filename
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326769.html
上一篇:Actionscript3.0:如何在主視窗和彈出視窗之間進行通信,直到主視窗獲得服務器登錄回應
下一篇:Bash環境變數
