●シェルスクリプトにおいて繰り返し処理を行うにはfor文やwhile文などを使う。
■for
for 変数名 in 値のリスト
do
実行分
done
for文は、指定された「値のリスト」を「変数名」に1つずつ格納していき、その度にdo ~ doneの間の「実行文」を処理
■while
while 条件分
do
実行分
done
while文は、条件文に記述されたコマンドの終了ステータスを使用し、繰り返し処理を継続するか終了するかを判定する。条件文が真(0)の場合に繰り返し処理を継続し、条件文が偽(0以外)の時点で繰り返し処理を終了
シェルスクリプトにおいて、処理の内容によって動作を変える(条件分岐)にはif文やcase文などを使用。
●if
if 条件分
then
実行分1
else
実行分2
fi
※実行文2を記述しない場合は「else」を省略できる。
●case
case 値 in
パターン1)実行文 ;;
パターン2)実行文 ;;
・・・・・
esac
値とパターンを照合し、パターンに一致するとそのパターンに指定されている実行文を処理。
パターンは任意の数の指定が可能。上から順番に値との照合を行い、一番最初に一致したパターンに対応する処理を実行し、case文を終了。一致するパターンが無い場合は、処理は実行されない
●testコマンド
条件式の真偽を判断し、その結果を終了ステータスとして返す(真は0、偽は1)。testコマンドは標準出力に何も表示しないため、while文やif文(条件分岐)などを使用する際に便利。
test 条件式
または
[ 条件式 ] ※「[」の後ろと「]」の前にはスペースが必要
▲ファイルに関する主な条件式
・-d パス 指定したパスが存在し、ディレクトリであれば真
・-e パス 指定したパスが存在すれば真
・-f パス 指定したパスが存在し、ファイルであれば真
・-r パス 指定したパスが存在し、読み込み可能であれば真
・-w パス 指定したパスが存在し、書き込み可能であれば真
・-x パス 指定したパスが存在し、実行可能であれば真
▲数値の比較に関する主な条件式
・数値1 -eq 数値2 数値1と数値2が等しければ真
・数値1 -ge 数値2 数値1が数値2以上であれば真
・数値1 -gt 数値2 数値1が数値2より大きければ真
・数値1 -le 数値2 数値1が数値2以下であれば真
・数値1 -lt 数値2 数値1が数値2未満であれば真
・数値1 -ne 数値2 数値1と数値2が等しくなければ真
▲ファイルの比較に関する主な条件式
・ファイル1 -nt ファイル2 ファイル1の更新日付がファイル2より新しければ真
・ファイル1 -ot ファイル2 ファイル1の更新日付がファイル2より古ければ真
▲以下の条件式はtestコマンドのオプションで結合できる
・!条件 条件が偽であれば真
・条件1 -a 条件2 条件1と条件2の両方が真であれば真(andと同じ意味)
・条件1 -o 条件2 条件1と条件2のどちらかが真であれば真(orと同じ意味)