2015-10-14 35 views
0

我想添加一些用戶誰是在這個文件中,如:在shell腳本中加入用戶txt文件

a b 
c d 
e f 

名姓始終

#!/bin/bash 
Lines=$(cat newusers.txt | wc -l) 


first=$(cat newusers.txt | awk '{print $1}') 
last=$(cat newusers.txt | awk '{print $2}') 

#test 
echo $Lines; 
echo $first; 
echo $last; 

until [ -z $1]; then 

useradd - m -d /home/$1 -c "$1 + $2" $1 

fi 

循環之前它工作正常,但我可以」不要添加換行符。 回聲顯示a c e,第二個顯示姓氏b d f。 我試圖添加換行符,但它不起作用。

我能爲此使用什麼? 因爲我猜我因爲換行問題而無法添加用戶。

我也搜索了stackoverflow找到一種方法來檢查用戶是否已經存在/dev/null但我必須使用哪個變量?

回答

1

它更容易處理由行的文件行:

while read first last ; do 
    useradd -m -d /home/"$first" -c "$fist + $last" "$first" 
done < newusers.txt 
+0

你在寫入的同時首先閱讀。但是,這是正確的? – gladius

+0

只有一個問題,我忘了問,我在哪裏添加密碼? – gladius

+0

@gladius:'read'逐行讀取,但它可以從一行讀取幾個字成多個變量。 – choroba

0

我不明白你的意思是你的代碼做什麼,但如果你想逐行讀取文件中的行,並得到的值不同的領域,那麼你可以使用下面的代碼片段:

#!/bin/bash 
filename="newusers.txt" 
while read -r line 
do 
    fn=$(echo "$line" |cut -d" " -f1) 
    ln=$(echo "$line" |cut -d" " -f2) 
    echo "$fn $ln" 
done < "$filename" 

注意:您不能添加用戶要使用bash腳本的方式;由於系統會提示您輸入密碼,必須使用tty來提供密碼,您可以使用expect進行編程;或使用系統調用。