!!!シェルプログラミング 条件 !!test ([) コマンド [シェルプログラミング] *真偽の判定 *ほとんどのシステムでは、test コマンドと [ コマンドは同じもの '''引数に指定されたファイルが存在するか判定''' #!bin/sh if test -f "$1" then echo "$1 found." fi if [ -f "$1" ]; then echo "$1 found." fi *'''[''' はコマンドなので、条件との間には空白が必要 *ifと同じ行にthenを記述する場合には、''';''' (セミコロン)が必要 *testコマンドが判定できる条件は、文字列比較、算術比較、ファイルの判定 ::文字列比較 ,文字列比較,結果 ,string1 = string2,文字列が等しければ真 ,string1 != string2,文字列が等しくなければ真 ,-n string,文字列がnullでなければ真 ,-z string,文字列がnull(空文字)であれば真 ::算術比較 ,算術比較,結果 ,exp1 -eq exp2,2つの式が等しければ真 ,exp1 -ne exp2,2つの式が等しくなければ真 ,exp1 -gt exp2,exp1がexp2より大きければ真 > ,exp1 -ge exp2,exp1がexp2より大きいか、等しければば真 >= ,exp1 -lt exp2,exp1がexp2より小さければ真 < ,exp1 -le exp2,exp1がexp2より小さいか、等しければば真 <= ,!exp,式の真偽を反転 ::ファイルの判定 ,ファイルの判定,結果 ,-d file,ディレクトリなら真 ,-e file,存在すれば真 ,-f file,通常のファイルなら真 ,-g file,set-group-idビットがセットされていれば真 ,-r file,読み取り可能なら真 ,-s file,サイズが0でなければ真 ,-u file,set-user-idビットがセットされていれば真 ,-w file,書き込み可能なら真 ,-x file,実行可能なら真 '''引数に指定されたファイルの判定''' #!/bin/sh if [ -f "$1" ];then echo "file $1 exists." fi if [ -d "$1" ];then echo "$1 is directory." else echo "$1 is not a directory." if [ -r "$1" ];then echo "readable." fi if [ -w "$1" ];then echo "writable." fi if [ -x "$1" ];then echo "executable." fi fi ---- 上記はこの本からの覚書。 非常にわかりやすく説明されている良書 {{amazon 4797327014}} ---- {{amazon 4797327014}}