for [変数名] in [文字列] ; do
[コマンド]
done
[文字列] を 1 つずつ変数に代入していきコマンドを実行する。
in [文字列] を省略するとスクリプトの引数 ($1, $2, ...) が順に代入されていく。
文字列にはワイルドカード (*, ?) が使用可能。
例:
for i in *.txt ; do
cat $i
done
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 [条件コマンド] ; do
[コマンド]
done
戻り値が 0 以外ならばコマンドを実行する。
if [条件] ; then
[コマンド]
elif [条件] ; then
[コマンド]
else
[コマンド]
fi
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`