2016-10-20 5 views
0

でファイルライン・バイ・ラインを読むが、その動作していない、の下など、さまざまな方法を試してみました:私は実行が行毎にファイルを読み取ろうとbashの

$ cat test.sh 
#!/bin/bash 

echo 'line1 
line2 
line3 
line4 
;;' > list.txt 

IFS=$'\n' 

for line in "$(cat list.txt)" 
do 
    echo "line=$line" 
    echo "----" 
done 

$ ./test.sh 
line=line1 
line2 
line3 
line4 
;; 
---- 

答えて

3

$()のコマンド置換に関する引用符を使用しているため、シェルは改行(IFS=$'\n')(およびパス名展開)で単語分割を実行していないため、ファイルの内容全体が単一の文字列として扱われます(最初のlineはそれ)、newlineの代わりにそれを繰り返すためにatedのもの。代わりにwhile-readを、

for line in $(cat list.txt) 

Although it is not recommended to iterate over lines of a file using for-cat combo使用します:

あなたが引用符を削除する必要が

while IFS= read -r line; do ...; done <list.txt 
関連する問題