【メッセージ具体例紹介】引数が多すぎます【シェルスクリプト】

雑学

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

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

# ./wrk.sh
./wrk.sh: 2 行: [: 引数が多すぎます

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

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

# ./wrk.sh
AAA

関連リンク