シェル・スクリプト・リファンレス |
コマンド集(機能別) | コマンド集(アルファベット順) | コマンド逆引き大全 | シェル・スクリプト・リファンレス |
複数の条件式の利用 |
複数の条件を調べたいことがある。たとえば,シェル変数の内容が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
|
とする。例では偽を返したのでファイルはディレクトリまたはシンボリック・リンクではないことが分る。
関連事項 |
test,[,[...]への置き換え |