【メッセージ具体例紹介】二項演算子が予期されます【シェルスクリプト】

雑学

備忘録になります。以下のようなケースでエラーメッセージが発生します。

# cat wrk.sh
VAR="A B"
if [ -n $VAR ] ; then
    echo "AAA"
fi

# ./wrk.sh
./wrk.sh: 2 行: [: A: 二項演算子が予期されます

比較対象となる変数にスペースが含まれる場合、複数変数を指定したと解釈され、期待しない動作となります。変数をダブルクォーテーション(“)で囲う事でスペースを含む変数を扱えます。

# cat wrk.sh
VAR="A B"
if [ -n "$VAR" ] ; then
    echo "AAA"
fi

# ./wrk.sh
AAA

関連リンク