2016-04-07 5 views
-2

私は、ファイル内の日付のリストをループして特定の操作を行うスクリプトを作成しようとしています。私のコードは以下のようになります。私はbashシェルを使用しています。今までUNIXのbashシェルでループしている間に

while read line; do 
#do something with $line 
done < file.txt 

私は2日付で、私のスクリプトをテストしようとしましたが、このスクリプトは、最初の日付ではなく、第二のために実行されます。また、私のスクリプトはそれが正常に完了したと言います。いくつか私をここで助けてくださいできますか?

今、私は4つの日付のスクリプトを実行しようとしています。私は誰かがN行があるが、スクリプトはN-1だけうまく行くという同様の問題を持っていることも読んでいる。しかし、私はその質問に対して完全な答えを見つけることができませんでした。

+0

「$ file.txt」とは何ですか? – karakfa

+0

ループが正しいです。 'file $ file.txt'を使って、ウィンドウに行末が含まれていないことを確認してください –

+0

あなたが投稿したコードには明らかに間違ったことはありません。ループの中で何をしているのか、入力ファイルに含まれているものを表示するために質問を編集してください。 – Kenster

答えて

2

私はそれを試しましたが、このコード構造は問題ありません。 問題はループ内にあるのでしょうか?

[[email protected]]$ cat a.txt 
a 
b 
c 
[[email protected]]$ while read line; do echo $line; done < a.txt 
a 
b 
c 
0

最後の行に改行が付くはずです。間違ったファイルを表示します:

printf "1\n2" > file.txt 
wc -l file.txt 
1 file.txt 
while read line; do 
> echo $line 
> done < file.txt 
1 

これは問題ですか?ちょうどcat file.txt。最後の行とコマンドプロンプトが同じ行にある場合は、file.txtに新しい行を追加する必要があります(など)。

関連する問題