使い方
文字列が等しいか判定する。
$ name=John $ if [ "$name" = "John" ]; then echo "My name is John."; fi
文字列が異なるか判定する。
$ if [ "true" != "false" ]; then echo "Hey!"; fi
スクリプト
if [ -f log.txt ]; then cat log.txt else echo "Hello, Log" > log.txt fi
参考:
シェルスクリプトの if 文と test コマンド – Qiita
if ~ then ~ else ~ fi 文使う場合に忘れちゃならないこと – Qiita
if 文と test コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス
Bash で if ~ then ~ else ~ fi 文使う場合に忘れちゃならないこと – Qiita
if elif else 構文の書き方 | IT を使っていこう
test コマンドにおける演算子
参考:
if 文/test 文のオプションを整理してみた – Qiita
シェルスクリプトの if 文や while 文で使う演算子について – Qiita
数値の比較
演算子
-eq
: 等しい (=)-ne
: 等しくない (≠)-lt
: 左辺が右辺より小さい (<)-le
: 左辺が右辺より小さいか等しい (≦)-gt
: 左辺が右辺より大きい (>)-ge
: 左辺が右辺より大きいか等しい (≧)
参考:
if 文と test コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス
変数が定義されているか判定する
演算子
-v
: 変数がセットされている-n
: 長さがゼロではない-z
: 長さがゼロである
使用例
変数 VAR
が定義されているかどうか判定する。
if [ -n "$VAR" ]; then
echo "VAR is defined. Its length is not zero.";
fi
Code language: Bash (bash)
参考:
シェル変数が定義されているかを判定する方法 | ねこゆきのメモ
シェルスクリプトで変数が未定義かを確認する | blog.n-t.jp
シェル変数が定義されているかを判定する方法は? | ALL about Linux
シェルスクリプトで空文字列かどうか調べる | masa.edw the ハバネロブリーダー
真偽値/ブーリアン
参考:
シェルスクリプトでブーリアンを使った条件分岐を行う方法 | Reasonable Code
How can I declare and use boolean variables in a shell script? – Stack Overflow
コード:
シェルスクリプトで true / false を使おう (dekokun) – GitHub Gist
ワイルドカード/正規表現
キーワードを含む場合の判定
if [[ $str =~ .*keyword.* ]]; then
echo "OK: str has keyword";
fi
Code language: Bash (bash)
キーワードを含まない場合の判定
if ! [[ $str =~ .*keyword.* ]]; then
echo "NO: str does not have keyword";
fi
Code language: Bash (bash)
コード:
文字列 A に文字列 B が含まれるか (mori-dev) – GitHub Gist
参考:
if に正規表現を使った文字列マッチ条件分岐 | それマグで!
シェルスクリプトでの正規表現を使ったバリデーション | unhurried
if 文でワイルドカード/正規表現を用いて条件判断をさせる | 俺的備忘録
正規表現 ある文字列を含んである文字列を含まない – Qiita
論理和/論理積
条件の論理和を判定するには、||
演算子を用いる。
if [ "$var1" = "true" ] || [ "$var2" = "true" ]; then
echo "True!"
fi
Code language: Bash (bash)
条件の論理積を判定するには、&&
演算子を用いる。
if [ "$var1" = "true" ] && [ "$var2" = "true" ]; then
echo "True!
fi
Code language: Bash (bash)
参考:
if 文で and や or 条件、&& や || 演算子を使う | 晴耕雨読
using the conditional “or” in an “if” statement – Unix & Linux Stack Exchange
エラー処理
fail || { echo "Error!"; exit 1; }
Code language: Bash (bash)
参考:
いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんてエラー処理を書くのはやめよう! – Qiita
終了ステータス | UNIX & Linux コマンド・シェルスクリプト リファレンス
コマンドの終了ステータスを判定して何かしたい時のイディオム | ハックノート
if 文でコマンド実行結果の戻り値を判定する | 四角革命前夜
$?
参考: