この記事では、《シェルスクリプトの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/bashnumA=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/shstr="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/bashstr="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/bashLOG_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_flagecho"dummy.shは正常終了"else
echo$exit_flagecho"dummy.shは異常終了"fi--- 実行結果 ---
$ . sample.sh
0
dummy.shは正常終了