inuxのシェルスクリプトで変数が空かどうかの確認する
Linuxのシェルスクリプトで変数が空かどうかを判定するには、-z オプションを使用します。
基本的な判定方法
変数が空(長さが0、または未定義)の場合に処理を実行する場合は、if [ -z "$変数名" ] と記述します
#!/bin/bash
# 空の変数
VAR=""
if [ -z "$VAR" ]; then
echo "変数は空です"
fi
主要な判定パターンの一覧
目的の条件に合わせて、以下のオプションや記述を使い分けてください。
| 判定したい条件 | 記述例 | 判定の挙動 |
|---|---|---|
| 変数が空のときに真 | if [ -z "$VAR" ]; then | 長さが0、または未定義なら成立 |
| 変数が空でないときに真 | if [ -n "$VAR" ]; then | 1文字以上の値が入っていれば成立 |
| 変数が未定義のときに真 | if [ ! -v VAR ]; then | 変数自体が存在しなければ成立(※Bash 4.2+) |
※ Bash 4.2+は、RHEL7以降で利用されています
記述する際の重要な注意点
・変数は必ずダブルクォーテーション "" で囲む"$VAR" のように囲まないと、変数が空だった場合に if [ -z ] となり、構文エラー(演算子の不足など)の原因になります。
・[ と ] の前後には必ずスペースを空ける[ はLinuxの「コマンド」として扱われるため、if [-z "$VAR"] のようにスペースを詰めるとエラーになります。
・-v オプションの引数には $ をつけない
変数の存在自体を調べる -v オプションを使う場合は、$VAR ではなく VAR と変数名だけを指定します

