選択構造
ifコマンド一般書式
if command
then
command
・・・
[else]
commnd
・・・
fi
caseコマンドの一般書式
case value in
pat1) coomand
・・・
・・・;;
pat2) command
・・・
・・・;;
patn) command
・・・
・・・;;
esac
コマンドの終了状況の取得
シェルは自動的に最後に実行されたコマンドの結果を特別なシェル変数$?に格納する。ふつう正常終了なら0、そうでないなら非0になる。
testコマンド
testコマンドは式を評価して真である場合は0、偽である場合は非0の終了状況を返す。
(例)
if test "$X"=1 # $Xを文字列として評価
then
fi
testコマンドは[式]と書くことができる。
(例)
if ["$X"=1]
then
fi
testコマンドの演算子
string1=string2 | 文字列が同じかどうか |
string1!=string2 | 文字列どうしが異なっているかどうか |
string1 | 文字列がNullかどうか |
-n string | 文字列がNullでない |
int1 -eq int2 | 整数どうしが等しいか |
int1 -ne int2 | 整数どうしが異なるか |
int1 -ge int2 | int1 >= int2か |
int1 -gt int2 | int1 > int2か |
int1 -le int2 | int1 <= int2か |
int1 lt int2 | int1 < int2か |
-d file | fileはディレクトリか |
-f file | fileは通常ファイルか |
-r file | fileは読み出し可能か |
-s file | fileは0でない長さか |
-w file | fileは書き込み可能か |
-x file | fileは実行可能か |
! | 否定 |
-a | AND(論理積) |
-o | OR(論理和) |
(例)
["$value" -le 0]
[-f -s -r /usr/test.txt]
[ ! -x /usr/cmd1]
[-x cmd2 -a -x cmd3]
[\("$v -lt 100\) -a \($w -gt 0\)]
(注意) 小カッコ"( )"を使うときは\が必要。
Nullコマンド
:は何も実行しない。
&&と||
command1 && command2はcommand1が正常終了した($?=0)のときcommand2を実行する。
command1 || command2はcommand1が正常終了しなかった($?!=0)のときcommand2を実行する。