PR
 シェル・スクリプト・リファンレス
コマンド集(機能別) | コマンド集(アルファベット順) | コマンド逆引き大全 | シェル・スクリプト・リファンレス

 指定した文字列分繰り返す「for」

 forは与えられた複数の文字列に対して,繰り返しながら処理してゆく繰り返し制御文だ。forは以下のように記述をする。


for 変数定義 in 文字列 
do
	繰り返す処理
done

 複数の文字列はスペースで区切りながら列挙する。たとえば,「Sun」,「Mon」,「Tue」の3つの文字列を処理したい場合は「Sun Mon Tue」と記述する。

 変数定義には現在処理している文字列を入れる変数を定義する。ここでは変数に代入をするため変数名の頭に$は付けてはならない。定義した変数は繰り返し処理内で利用できる。

たとえば,以下のようなシェル・スクリプト「name.sh」があったとする。


#!/bin/sh

name="Fukuda Tajima Hata"
for buf in $name
do
	echo "Name : $buf";
done

 このシェル・スクリプトを実行すると


$ ./name.sh 
Name : Fukuda
Name : Tajima
Name : Hata

のようにメッセージを表示する。


 引数分繰り返す

 forを使えばシェル・スクリプトを実行した際に指定した引数分,繰り返して実行できる。その際,forの文字列には「"$@"」を記述すると,スクリプト実行時の引数を利用できる。たとえば,以下のようなシェル・スクリプト「change_euc.sh」があったとする。


#!/bin/sh

for t_file in "$@"
do
	nkf -e -Lu $t_file > $t_file.euc
done

 このスクリプトを実行すると,引数に与えた全てのファイルをnkfコマンドで文字コードをEUCにして元のファイル名の最後に「.euc」を付けて出力する。