バッチを組むときに使える,testコマンド
[root@localhost ~]# test -f t; echo $? <—-ファイルが無い
1
[root@localhost ~]# test -f lslink ; echo $? <—-ファイルが有る
0
[root@localhost ~]#
==========================================================
testコマンド
説明
test は条件式 expr を評価した結果によって、 0 (真) または 1 (偽) を終了ステータスとして返す。
式 の各部分はそれぞれ分離された引数でなければならない。式は単項式あるいは二項式である。 test はファイ
ルのステータス調査、文字列操作、数値の比較演算を行うことができる。
ほとんどのシェルには同名の組み込みコマンドがあるので、単に ‘test’ として実行すると、ここで記述され た
ものとは異なった機能のものが実行されるだろう。
ファイル形式のテスト
-b file
file が存在し、ブロックスペシャルファイルであれば真。
-c file
file が存在し、キャラクタスペシャルファイルであれば真。
-d file
file が存在し、ディレクトリであれば真。
-f file
file が存在し、通常ファイル (regular file) であれば真。
-h file
-L file
file が存在し、シンボリックリンクであれば真。
-p file
file が存在し、名前付きパイプ (named pipe) であれば真。
-S file
file が存在し、ソケットであれば真。
-t [fd]
fd が端末でオープンされていれば真。 fd が省略された場合のデフォルト値は 1 (標準出力)。
ファイルのパーミッションのテスト
-g file
file が存在し、set GID されていれば真。
-k file
file が存在し、 sticky ビットが立っていれば真。
-r file
file が存在し、読み取り可能であれば真。
-u file
file が存在し、 set SUID されていれば真。
-w file
file が存在し、書き込み可能であれば真。
-x file
file が存在し、実行可能であれば真。
-O file
file が存在し、現在の実効ユーザー id による所有であれば真。
-G file
file が存在し、現在の実効グループ id による所有であれば真。
ファイル特性のテスト
-e file
file が存在すれば真。
-s file
file が存在し、サイズが 0 より大きければ真。
file1 -nt file2
file1 が file2 より (修正時刻で比較して) 新しければ真。
file1 -ot file2
file1 が file2 より古ければ真。
file1 -ef file2
file1 と file2 のデバイス番号と i-ノード番号が共に等しければ真。
文字列のテスト
string
-n string
string の長さが 0 より大きければ真。
-z string
string の長さが 0 であれば真。
string1 = string2
二つの文字列が等しければ真。
string1 != string2
二つの文字列が等しくなければ真。
数値のテスト
arg1 OP arg2
OP は -eq, -ne, -lt, -le, -gt, -ge のいずれか。これらの代数二項演算子は、それぞれ arg1 が arg2
(に等しい、に等しくない、より小さい、より小さいか等しい、より大きい、より大きいか等しい) 条 件
を 満たせば真。 arg1 および arg2 は正の整数、負の整数をとることができる。また -l string という
特殊な式を指定することもでき、この場合は string の長さとなる。
テストの論理結合
! expr expr が偽であれば真。
expr1 -a expr2
expr1 と expr2 の両方が真であれば真。
expr1 -o expr2
expr1 か expr2 のどちらかが真であれば真。
==========================================================
############################################
(例) 以下のような内容でバッチを作成してみる。
############################################
[root@localhost ~]# cat filechk.sh
#!/bin/bash
if test -f lsld
then
echo “ファイルがありました。シェルを実行します”
./lsld
else
“スクリプトが存在しませんでした,処理を中止いたします”
fi
[root@localhost ~]#
↓ 実行
[root@localhost ~]# ./filechk.sh
ファイルがありました。シェルを実行します
Link Files
Directories
drwxr-xr-x 2 admin admin 4096 10月 4 21:11 Desktop
drwxr-xr-x 4 root root 4096 10月 8 00:16 postsource
drwxr-xr-x 3 root root 4096 10月 27 01:50 source
[root@localhost ~]#
追記: test = [ ] コマンドです。
[root@localhost ~]# cat filechk2.sh
#!/bin/bash
if [ -f lsld ]
then
echo “ファイルがありました。シェルを実行します”
./lsld
else
“スクリプトが存在しませんでした,処理を中止いたします”
fi
[root@localhost ~]# ./filechk2.sh
ファイルがありました。シェルを実行します
Link Files
Directories
drwxr-xr-x 2 admin admin 4096 10月 4 21:11 Desktop
drwxr-xr-x 3 admin admin 4096 8月 12 2002 atmarkit5th
drwxr-xr-x 4 root root 4096 10月 8 00:16 postsource
drwxr-xr-x 3 root root 4096 10月 27 01:50 source
drwxr-xr-x 5 1000 1000 4096 5月 12 2007 vim71
[root@localhost ~]#