我想在一個UNIX Red Hat系統中添加多個用戶。我使用兩個文本檔案作為源檔案,其中包含9個用戶名和9個全名,分別在9個新行中分開。
$U包含usernames.txt,$I包含全名以配合-c命令,$Z包含1-9的尾數以設定-u的結束值。我希望這個腳本能夠實作的是,它能夠用我所列出的值來填充useradd命令,使useradd命令能夠執行,添加用戶的用戶名、注釋欄位(全名)和一個ID值。在系統中實際執行腳本的useradd命令部分之前,我用echo命令來測驗輸出的結果是什么。然而,該腳本實際上將fullnamecomment.txt中的空格解釋為單獨的迭代,基本上該腳本列印出相同的查詢9次,依次在-u值上加1。
@社區,誰能就優化這個腳本或改變我的方法來添加多個用戶在useradd命令中填充用戶名、評論和ID值提供任何意見?
謝謝。
#!/bin/bash
for U in $(cat username.txt)
do
for I in $(cat fullnamecomment.txt)
做
for Z in {1..9}.
do
#useradd $U -m -c $I -u 10010$Z
echo "useradd $U -m -c $I -u 10010$Z"/span>
done
done done
done done
uj5u.com熱心網友回復:
當你對你的回圈進行嵌套時,這意味著你想在每次外回圈發生時反復運行內回圈。這顯然不是你在這里實際要做的;你的代碼是要同步迭代這些變數,把每個用戶名、全名和UID配對起來。這意味著你應該只有一個回圈,而不是相互嵌套的多個回圈。
offset=0
while IFS= read -r username <&3 & & IFS= 讀 -r fullname <&4 && ( ( offset )); 做
useradd "$username" -m -c "$fullname" -u "$( (100100 offset))"
done 3<username.txt 4<fulnamecomment.txt
uj5u.com熱心網友回復:
來自SteveKline的決議被修改:
Z=100101
IMPORTCSV=$(cat tabdelimituserlist.csv)
whileread -r line; do
U=$(echo $line | cut -f1 -d:)
I=$(echo $line | cut -f2 -d:)
echo "useradd"$U" -m - c "$I" -u "$Z""
#useradd "$U" -m -c "$I" -u "$Z"
#Optional since RHEL passwd permits stdin arguments
#echo 73mp@ssw0rd | passwd -stdin "$U"
Z=$( ( ( $Z 1 ) ) #Will increment 1 after 100100 for each user added[/span].
done <<< "$IMPORTCSV"/span>
uj5u.com熱心網友回復:
看起來你得到了不想要的回圈?你可以做一個單一的CSV,并且不在預定的用戶之上迭代其他用戶。
為用戶創建一個以制表符分隔的CSV
User1 User1 Full Name
用戶2 用戶2全名
然后你可以用while read進行決議...
Z=100100
importcsv=$(cat userimport.csv)
while read -r line; do
$U=$(echo $line | cut -f1 -d$' ' )
$I=$(echo $line | cut -f2 -d$' ' )
useradd "$U" -m -c "$I" -u "$Z"
#Optional since RHEL passwd permits stdin arguments
#echo 73mp@ssw0rd | passwd --stdin "$U"
$Z=$( ( $Z 1 )) #Will increment 1 after 100100 for each user added.
done <<< "$importcsv"/span>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/332513.html
標籤:
上一篇:我可以使用prisma和node-postgrestougether嗎?
下一篇:獨立特性的git分支策略
