シェルプログラミング 条件
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
上記はこの本からの覚書。
非常にわかりやすく説明されている良書
YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto
Copyright© 矢木 浩人 All Rights Reserved.