Linux シェルスクリプト|[: =: unary operator expected エラーの原因と対応方法|bash シェル


Linux で シェルスクリプトを実行すると、[: =: unary operator expected エラーが発生した。ここでは、エラーの原因と対応方法を記載する。


現象

シェルスクリプトを実行すると、下記のエラーメッセージが表示された。

・エラーメッセージ

[: =: unary operator expected

原因

if 文の条件式にて、変数をダブルクォーテーション「"」で囲んでいなかったため、変数が設定なしの場合にエラーが発生した。例えば、下記の test.sh を実行すると、同様のエラーが発生する。これは、条件式 「[ ${var_test} = "" ]」の ${var_test} をダブルクォーテーション「"」で囲んでいないため、${var_test} が設定なしの場合、条件式は「 = ""」と判定される。${var_test} をダブルクォーテーション「"」で囲んで条件式 「[ "${var_test}" = "" ]」とすると、条件式は「 "" = ""」と判定され、正常に動作する。



test.sh
#!/bin/bash

var_test=""

if [ ${var_test} = "" ]; then
  echo "true : var_test=${var_test}"
else
  echo "false : var_test=${var_test}"
fi


実行結果

./test.sh: line 5: [: =: unary operator expected false : var_test=

対応方法

if 文の条件式で使用する変数は、変数が設定なしのケースを考慮して、ダブルクォーテーション「"」で囲んでおく。たとえば、上記の test.sh は、「if [ ${var_test} = "" ]; then」 → 「if [ "${var_test}" = "" ]; then」のように修正する必要がある。




スポンサーリンク

0 件のコメント :

コメントを投稿