制御文


for

for [変数名] in [文字列] ; do
    [コマンド]
done

[文字列] を 1 つずつ変数に代入していきコマンドを実行する。

in [文字列] を省略するとスクリプトの引数 ($1, $2, ...) が順に代入されていく。

文字列にはワイルドカード (*, ?) が使用可能。

例:

for i in *.txt ; do
    cat $i
done

while

while [条件コマンド] ; do
    [コマンド]
done

戻り値が 0 ならばコマンドを実行する。

例:いろいろな圧縮率の jpeg を作る。

#!/bin/sh

i=80
while [ $i -le 100 ] ; do
    cjpeg -quality $i source.bmp > $i.jpg
    i=`expr $i + 1`
done

until

until [条件コマンド] ; do
    [コマンド]
done

戻り値が 0 以外ならばコマンドを実行する。


if

if [条件] ; then
    [コマンド]
elif [条件] ; then
    [コマンド]
else
    [コマンド]
fi

case

case [文字列] in
[パターン] )
[コマンド]
;;
esac

文字列がパターンに一致したときにコマンドを実行する。パターンにはワイルドカード (*, ?) が使用可能。

例:

case $1 in
YES|yes)
    echo YES
    ;;
*)
    echo NO
    ;;
esac

論理和 論理積

論理積

if [ $NUM1 -eq 1 ] && [ $NUM2 -eq 10 ] ; then
    ... fi

論理和

if [ $NUM1 -eq 1 ] || [ $NUM2 -eq 10 ] ; then
    ... fi

テストコマンド

[ A = B ] A と B が同じ文字列ならば 0 を返す
[ A != B ] A と B が違う文字列ならば 0 を返す
[ A -eq B ] A = B ならば 0 を返す
[ A -ne B ] A ≠ B ならば 0 を返す
[ A -lt B ] A < B ならば 0 を返す
[ A -le B ] A ≦ B ならば 0 を返す
[ A -gt B ] A > B ならば 0 を返す
[ A -ge B ] A ≧ B ならば 0 を返す
[ -f A ] ファイル A が存在するならば 0 を返す

変数の計算を行いたいときには expr を使う。

COUNT=`expr $COUNT + 1`

目次へ