シェルプログラミング 条件
ナビゲーションに移動
検索に移動
| シェルプログラミング |
シェルプログラミング 条件
test ([) コマンド
- 真偽の判定
- ほとんどのシステムでは、test コマンドと [ コマンドは同じもの
- man test
引数に指定されたファイルが存在するか(-f)判定
#!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 | 文字列が等しくなければ真 |
| 文字列がnullでなければ真 | |
| 文字列が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 | 式の真偽を反転 |
ファイルの判定
| ファイルの判定 | 結果 |
|---|---|
| ディレクトリなら真 | |
| 存在すれば真 | |
| 通常のファイルなら真 | |
| set-group-idビットがセットされていれば真 | |
| 読み取り可能なら真 | |
| サイズが0でなければ真 | |
| set-user-idビットがセットされていれば真 | |
| 書き込み可能なら真 | |
| 実行可能なら真 |
引数に指定されたファイルの判定
#!/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
上記はこの本からの覚書。
非常にわかりやすく説明されている良書
© 2006 矢木浩人