2011-12-03 2 views
1

アカウント作成のためのスクリプトをcsvファイルから読み込みました。私はcsvの最初の行を必要としません。最初の行はsed 1d $ fileを使っていますが、うまくいきません。Bash:stdinの最初の行を削除する

#!/bin/bash 

FILE="applicants.csv" 

sed 1d $FILE |while IFS=: read USERNAME PASSWORD SCHOOL PROGRAM STATUS; do 

#------------------------------------------ 
groupadd -f $SCHOOL 
useradd $USERNAME -p $PASSWORD -g $SCHOOL 
if [ $? == 0 ]; then 
echo 
echo "Success! $USERNAME created" 
grep $USERNAME /etc/passwd 
echo 
#------------------------------------------ 

else 
echo "Failed to create account for $USERNAME" 
fi 

done < $FILE 

ここでcsvファイルここ

Full Name:DOB:School:Program:Status 
JoseDavid:22-08-86:ACE:Bsc Computing:Unfinished 
YasinAhmed:22-07-85:ACE:Bsc Networking:Complete 
MohammedAli:21-04-84:ACE:Bsc Forensics:Complete 
UtahKing:22-09-84:ACE:BSC IT:Unfinished 
UsmanNaeem:21-09-75:ACE:BSC Computing:Complete 

は出力 http://i.stack.imgur.com/R5zPN.jpg

のスクリーンショットは、最初の行をスキップするようにとにかくされているのですか?

答えて

3

sedの代わりに tail -n +2 $FILEをお試しください。

編集していないファイルから、最後のリダイレクト:done < $FILEを読み込んでいます。その行をちょうどdoneに変更してみてください。

+0

まだ最初の行を読んでいますが、awkでも試してみましたが、何も起こりません。 –

+0

おっと!私は本当の問題を見つけ、私の答えを更新しました。 –

+1

私は次のようなメッセージを取り除きました./bulk:21行目:予想外のトークン '$ FILE 'の近くで構文エラーが発生しました ./bulk:行21:' done $ FILE' –