バッチを組むときに使える,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 ~]#

Comments are closed.

Post Navigation