2013-03-18 40 views
-1

我正在嘗試編寫一個腳本,用於從文件創建用戶名,但是如果有兩個相同的用戶名,則每次都會將後一個用戶名加1。我認爲我搞亂的是if/else語句,但任何幫助將不勝感激。如何將增加的數字添加到已採用的用戶名

#!/bin/bash 

if [ $# -ne 0 ]; then 
    echo "usage: $0 < file" exit 1 
fi 

while read user_list; do 
    first=echo $user_list | cut -f 1 -d ',' `last=`echo $user_list | cut -f 2 -d ',' 
    lastl=echo $last | head -c 1 usern=echo $first $lastl | tr 'A-Z' 'a-z' 
    tname=echo $first $last 
    groupadd $usern useradd -c "${first}${last}" -d /home/${usern} -g $usern -m -s /bin/bash $usern 
    passwd=$(cat /dev/urandom |tr -dc 'A-Za-z0-9' | head -c 8) 
    cat /tmp/pw.tmp | /usr/bin/passwd --stdin ${usern} > /dev/null 
    echo "adding $tname : $usern, $passwd" 
done 

original_username=$usern 
username_digit=0 

while read line; do 
    grep -w $usern /etc/passwd 
    if [[ ! usern /etc/passwd]]; then 
     username_digit=$((username_digit +1)) 
     usern=$((original_username + $username_digit)) 
    else 
     usern+$original_username 
    fi 
done 
+1

你能與用戶名的_short_列表,你想用擴大;你想要的輸出是什麼;和輸出實際是什麼? – Floris 2013-03-18 14:14:02

+0

-1這個腳本很混亂,真的......它就像虛構的代碼。答案沒有很好地解釋/格式化。 – 2013-03-18 14:27:37

+0

1.反引號不嵌套。使用'$()'做。 2.'first = echo ...'是毫無意義的。 3.在所有地方無用「貓」。使用'cmd Jens 2013-03-18 14:32:55

回答

0
if grep -q "^${usern}:" /etc/passwd; then 
    username_digit=$((username_digit++)) 
    usern="$original_username$username_digit" 
(...) 
+1

當'$ usern'匹配'/ etc/passwd'就像root的主目錄或登錄shell一樣?您應該更具體地確定搜索的位置。 – Jens 2013-03-18 14:35:26

+0

相應編輯。 – 2013-03-18 16:28:57

相關問題