この記事では、《シェルスクリプトのif文(test文)のオプション》について、
業務を通して学習した内容をまとめています。
- オプション①: 数値の比較
- オプション②: 文字列の比較
- オプション③: 文字列長のチェック
- オプション④: ファイル・ディレクトリのチェック
- オプション⑤: 実行結果のチェック
こういった内容についてまとめています。
※本記事は、自分で学習したことのまとめ用として書いています。
尚、解説で誤った点があれば、スローして頂ければ喜んでキャッチしますのでお願い致します。
オプション①: 数値の比較
オプション | 説明 | 備考① | 備考② |
---|---|---|---|
A -eq B | AとBが等しければ true | equal | = |
A -ne B | AとBが等しくなければ true | not equal | != |
A -gt B | AがBより大なら true | greater than | > |
A -ge B | AがB以上なら true | greater than or equal | >= |
A -lt B | AがBより小なら true | less than | < |
A -le B | AがB以下なら true | less than or equal | <= |
--- 例題 ---
sample.sh
#!/bin/bash
numA=1
numB=1
if [ $numA -eq $numB ]; then
echo "numA と numB は等しい"
else
echo "numA と numB は等しくない"
fi
--- 実行結果 ---
$ . sample.sh
numA と numB は等しい
オプション②: 文字列の比較
オプション | 説明 |
---|---|
A = B | AとBが等しければ true |
A != B | AとBが等しくなければ true |
--- 例題 ---
sample.sh
#!/bin/sh
str="hello"
if [ ${str} = "hello" ]; then
echo "${str}"
echo "Hello!!!"
elif [ ${str} = "world" ]; then
echo "${str}"
echo "World!!!"
else
echo "Hello World!!!"
fi
--- 実行結果 ---
$ . sample.sh
hello
Hello!!!
オプション③: 文字列長のチェック
オプション | 説明 |
---|---|
-z A | Aの文字列長が 0 なら true |
-n A | Aの文字列長が 0 より大なら true |
--- 例題 ---
sample.sh
#!/bin/bash
str="abcde"
if [ -n "${str}" ]; then
echo "文字列長は 0 より大きいです!"
else
echo "文字列長は 0 です!"
fi
--- 実行結果 ---
$ . sample.sh
文字列長は 0 より大きいです!
オプション④: ファイル・ディレクトリのチェック
オプション | 説明 |
---|---|
-f A | Aがファイルなら true |
-d A | Aがディレクトリなら true |
-e A | Aが存在するなら true |
-s A | Aのサイズが 0 より大きければ true |
-r A | Aが読み取り可能なら true |
-w A | Aが書き込み可能なら true |
-x A | Aが実行可能なら true |
--- 例題 ---
sample.sh
#!/bin/bash
LOG_FILE="sample.log"
if [ -f ${LOG_FILE} ]; then
echo "ファイルです!"
else
echo "ファイルではありません!"
fi
--- 実行結果 ---
$ . sample.sh
ファイルです!
オプション⑤: 実行結果のチェック
オプション | 説明 |
---|---|
$? | 直前のコマンドの実行結果を格納 |
--- 例題 ---
sample.sh
#!/bin/bash
. dummy.sh # dummy.shを実行
exit_flag=$? # 実行結果を変数に格納
if [ $exit_flag = 0 ]; then
echo $exit_flag
echo "dummy.shは正常終了"
else
echo $exit_flag
echo "dummy.shは異常終了"
fi
--- 実行結果 ---
$ . sample.sh
0
dummy.shは正常終了