シェルスクリプトでファイルからデータ入力
#17 ファイルから入力してみよう
http://dotinstall.com/lessons/basic_shellscript/10617
を参考に
ファイルからのデータ入力処理について学習
ユーザ入力でデータ入力するには
read を使う
ファイルから1行ずつ読み込んで実行するには
まず、
vim data.txt
でファイルを作成
内容は適当に
a
aaa
aaaaa
として保存
これを読み込んで表示するスクリプトを作成
vim filerun.sh
として
#!/bin/bash
i=1
while read line
do
echo “$i: $line”
i=`expr $i + 1`
done <$1
として保存し、実行する
$1 は引数1という意味なので
./filerun.sh data.txt
というように、読み込むファイルを指定する
すると
1: a
2: aaa
3: aaaaa
という結果になる
処理についてちょっと復習メモ
echo "$i: $line"
は、
$i=行数:$line=ファイルの内容
というようになる
i=`expr $i + 1`
これは行数の足し算
`` はバッククオートなので shift + @ なので
シングルクオート shift +7 と間違えないように注意
expr は計算するコマンド
while ループのなかで $i +1 なので
ファイルが読み込み終わるまで足されていく
while read line
のところは
構文にすると
while read 変数
do
行う処理
done < 読み込むファイル
となる
変数なので
while read thisfile
とかみたいに line じゃなくてもOK
あと、読み込むファイルは
今回は $1 としているけど
done < data.txt
としてしまえば、ファイルを直接読み込ませることもできる
これについては
while 文の使用方法
を参照するとわかりやすい