2014-11-04 40 views
1

我的CSV文件包含所需的信息,如名字,姓氏,用戶標識。我有5個用戶,我需要從CSV解析。爲了創建分配給組(group1)的帳戶並分配加密的臨時密碼。我打了一堵牆,任何幫助都會很棒。謝謝!使用BASH在Linux中添加CSV用戶

#!/bin/bash 

OLDIFS=$IFS 
IFS="," 

while read firstname lastname userid 
do 
    useradd -c "$firstname $lastname -d /home/$userid -G group1 -s /bin/bash $userid" 
done 
IFS=$OLDIFS 

沒有用戶從腳本執行中被添加。

+1

你有什麼不對? – 2014-11-04 13:56:29

+0

@ 1up你有一個未結束的報價。但是沒有辦法知道這是否是原因,因爲您沒有正確描述問題。 – Biffen 2014-11-04 13:57:46

+0

我在BASH中執行時在第8行發生錯誤; ./Parse.sh:第8行:尋找匹配的'''意想不到的EOF ./Parse.sh:第12行:語法錯誤:文件意外結束 – 1up 2014-11-04 13:57:59

回答

1

這應該對你有所幫助。

#!/bin/bash 

OLDIFS=$IFS 
IFS="," 

while read firstname lastname userid 
do 
    useradd -c "${firstname} ${lastname}" -d /home/"${userid}" -G group1 -s /bin/bash "${userid}" 
done < file.csv 

你的劇本很好,我已經作出一些改動如下

  1. 所引述的變量,這將防止不必要的擴展。
  2. 重置IFS不是必需的,因爲腳本在子外殼中運行。
  3. while需要一個文件輸入,所以添加它。
+0

謝謝,我也救了我文件到錯誤的位置,因此沒有變化。 – 1up 2014-11-04 14:34:29

+0

關於#4:雙引號就足夠了。這樣,單引號將被髮送到'useradd'(這可能不是問題)。 – Biffen 2014-11-04 14:49:04

+0

@Biffen,檢查它,是的,這是正確的。 – 2014-11-04 14:56:27