選択構造


 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を実行する。