シェル・スクリプト・リファンレス
コマンド集(機能別) | コマンド集(アルファベット順) | コマンド逆引き大全 | シェル・スクリプト・リファンレス

 複数の条件式の利用

 複数の条件を調べたいことがある。たとえば,シェル変数の内容が10以上で100以下であるかを調べるには,シェル変数が10以上であるかを調べ,もし10以上であれば100以下であるかを調べるというように,2度条件を判別することになる。

 testコマンドではNOTおよびAND,OR論理を利用することで複数の条件式を1回で調べることができる。


 NOT論理

 NOT論理は条件式が偽であった場合に真を返す。NOT論理は,


test ! 条件式1

のように記述する。

 たとえば,指定したファイルが存在しないことを調べるには,


$ ls -l document.txt 
-rw-rw-rw  1 fukuda fukuda  345612  4月  8 10:13 document.txt
  ↑ ファイルが存在する
$ test ! -e document.txt 
$ echo $? 
1

とする。例では偽を返したのでファイルが存在することが分る。


 AND論理

 AND論理は2つの条件式が共に真である場合に真を返す。AND論理は,


test 条件式1 -a 条件式2

のように記述する。

 たとえば,指定したファイルが存在し,読み込みおよび書き込みが可能であるかを調べるには,


$ ls -l document.txt 
-rw-rw-rw  1 fukuda fukuda  345612  4月  8 10:13 document.txt
  ↑ ファイルは読み書きが可能である
$ test -r document.txt -a -w document.txt 
$ echo $? 
0

とする。例では真を返したのでファイルが読み書き可能だと分る。


 OR論理

 OR論理は2つの条件式のいずれかが真である場合に真を返す。OR論理は,


test 条件式1 -o 条件式2

のように記述する。

 たとえば,指定したファイルが存在し,ディレクトリまたはシンボリックリンクであるかを調べるには,


$ ls -l document.txt 
-rw-rw-rw  1 fukuda fukuda  345612  4月  8 10:13 document.txt
  ↑ ファイルは一般のファイルである
$ test -d document.txt -o -h document.txt 
$ echo $? 
1

とする。例では偽を返したのでファイルはディレクトリまたはシンボリック・リンクではないことが分る。