シェルスクリプトで空文字の判定を行おうと、次のようなコードを書きました。
if [ $variable = “” ]; then echo “空文字だから!” fi
これを実行してみると、$variableが未定義、もしくは空文字がセットされている時にエラーが発生した。
[: =: unary operator expected
未定義、もしくは空文字を代入した変数は実行時にこのように解釈されるようです。
if [ = "" ]; then echo "空文字だから!" fi
したがって、この問題を避けるには
if [ "$variable" = "" ]; then echo "空文字だから!" fi
という形で、ダブルクオーテーションで囲った中に、変数の値を展開する形にする必要があるようです。