シェルスクリプトで、1行ずつのファイル読み込みをしたい場合は、次のようにします。
#!/bin/sh
filename=$1
cat ${filename} | while read line
do
echo ${line}
done
filename=$1
cat ${filename} | while read line
do
echo ${line}
done
もしくはリダイレクトを使って次のようにします。
#!/bin/sh
filename=$1
while read line ; do
echo ${line}
done < ${filename}
filename=$1
while read line ; do
echo ${line}
done < ${filename}
ちなみに、行にある値に空白やタブが含まれていない場合は次のようにすることもできます。(こちらだと、空白やタブも区切り文字とされてしまうので注意してください)
#!/bin/sh
filename=$1
for line in `cat ${filename}`
do
echo ${line}
done
filename=$1
for line in `cat ${filename}`
do
echo ${line}
done
「詳解 シェルスクリプト」や「仕事に使えるLinuxシェルスクリプト~bashで作る実用サンプル41 」などで勉強してみると良いでしょう。
—-
関連書籍
- bashによる簡単なプログラミングを学ぶには … 仕事に使えるLinuxシェルスクリプト~bashで作る実用サンプル41
- クラスベースのオブジェクト指向プログラミング言語の基礎を学ぶには … 改訂版 基礎Java(CD-ROM付) (IMPRESS KISO SERIES)
- クラスベースのオブジェクト指向プログラミング言語を学ぶには … プログラミング言語Java (The Java Series)
- 関数型プログラミング言語を学ぶには … Scalaスケーラブルプログラミング第2版
- プログラミング言語の理論を学ぶには … プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト)