条件式1 -a 条件式2 | 条件式1と条件式2の両方が真の場合に真 |
---|---|
条件式1 -o 条件式2 | 条件式1と条件式2の少なくとも1つが真の場合に真 |
!条件式 | 条件式の真偽を逆にする(NOT) |
() | 条件式をグループ化する |
演算子の結合の例1
Vimで「comb-and.sh」というファイル名を作成、以下を記述、実行権限を付与する。 [bash]
!/bin/bash
dir=$1
if [ -d "$dir" -a -r "$dir" ]; then echo "$dirはディレクトリで読み取りパーミッションがある" fi [/bash]
変数「dir」に1つ目の変数を格納。 「-d」なので変数「dir」が存在し、ディレクトリであり、かつ、変数「dir」に読み取りパーミッションが与えられていれば「$dirはディレクトリで読み取りパーミッションがある」と表示される。
シェルスクリプトを実行する
[bash] $ ./comb-and.sh /home/minecraft/bin/ [/bash] 実行結果。 [bash] /home/minecraft/bin/はディレクトリで読み取りパーミッションがある [/bash]
演算子の結合の例2
Vimで「comb-and.sh」というファイル名を作成、以下を記述、実行権限を付与する。 [bash]
!/bin/bash
dir=$1
if [ ! -d "$dir" ]; then echo "$dirは存在しません" fi [/bash]
変数「dir」に1つ目の変数を格納。 「-d」があるので、変数「dir」が存在し、かつディレクトリで、 「!」があるので、変数「dir」が存在しなければ、if文内が実行され「$dirは存在しません」と表示される。
シェルスクリプトを実行する
[bash] $ ./comb-not.sh /home/minecraft/test/ [/bash] 実行結果。 [bash] /home/minecraft/test/は存在しません [/bash]
複数のコマンドを連結する &&
書式
[bash] コマンド1 && コマンド2 [/bash] コマンド1が正常終了した場合(=終了ステータスが0の場合)のみコマンド2を実行する。
&& の例
[bash] $ [ -f test.txt ] && cat test.txt [/bash] file.txt が存在すれば test.txt の内容を表示させる。
複数のコマンドを連結する ||
書式
[bash] コマンド1 || コマンド2 [/bash] コマンド1が正常終了しなかった場合(=終了ステータスが0以外の場合)のみコマンド2を実行する。
|| の例
[bash] $ [ -f test.txt ] || touch test.txt [/bash] file.txt が存在しなければ touch コマンドを実行してファイルを作成する。
if 文内で && を使用する例
if文で && を使用することでAND条件を記述することができる。 ※「複数のコマンドの終了ステータスがすべて「0」の場合」ということ。
Vimで「comb-if.sh」というファイル名を作成、以下を記述、実行権限を付与する。 [bash]
!/bin/bash
int=$1 if [ "$int" -gt 0 ] && [ "$int" -lt 11 ]; then echo "in1 は 1桁の自然数" fi [/bash]
シェルスクリプトを実行する
[bash] $ ./comb-if.sh 4 [/bash] 実行結果 [bash] int1 は 1桁の自然数 [/bash]