シェルスクリプトで「while read line」を使い、ファイルの中身を一行ずつ読み込ませるための方法色々です。
標準入力へリダイレクトさせて読み込む
ファイルを標準入力へリダイレクトさせて中身を一行ずつ読み込ませています。
#!/bin/bash while read line do echo $line done < ファイル名
スクリプト例
「list.txt」というファイルの中身を読み込ませて、一行ずつ「echo」で表示させています。
$ cat list.txt one two three four five
#!/bin/bash while read line do echo $line done < ./list.txt
上記スクリプトの実行結果です。
$ sh fileread_1.sh one two three four five
ファイルを変数に格納して読み込む
ファイルの中身を「cat」コマンドで表示させ、それを変数に格納しヒアドキュメント(Here Document)を使用して読み込ませています。
#!/bin/bash DATA=`cat ファイル名` while read line do echo $line done << FILE $DATA FILE
スクリプト例
「list.txt」の中身を変数「DATA」に格納して、ヒアドキュメントを使って変数の中身を読み込ませています。
$ cat list.txt one two three four five
#!/bin/bash DATA=`cat ./list.txt` while read line do echo $line done << FILE $DATA FILE
スクリプト実行結果です。
$ sh fileread_2.sh one two three four five
catでファイルの中身を表示してパイプ(|)でわたす
ファイルの中身を「cat」で表示させて、その結果をパイプ(|)を使って読み込ませています。
#!/bin/bash cat ファイル名 | while read line do echo $line done
スクリプト例
「lixt.txt」の中身を「cat」で表示させて、その結果をパイプ(|)で「while read line」に渡しています。
$ cat list.txt one two three four five
#!/bin/bash cat ./list.txt | while read line do echo $line done
スクリプト実行結果です。
$ sh fileread_3.sh one two three four five
コメント