Linux で シェルスクリプトを実行すると、[: =: unary operator expected エラーが発生した。ここでは、エラーの原因と対応方法を記載する。
現象
シェルスクリプトを実行すると、下記のエラーメッセージが表示された。
・エラーメッセージ
[: =: unary operator expected原因
if 文の条件式にて、変数をダブルクォーテーション「"」で囲んでいなかったため、変数が設定なしの場合にエラーが発生した。例えば、下記の test.sh を実行すると、同様のエラーが発生する。これは、条件式 「[ ${var_test} = "" ]」の ${var_test} をダブルクォーテーション「"」で囲んでいないため、${var_test} が設定なしの場合、条件式は「 = ""」と判定される。${var_test} をダブルクォーテーション「"」で囲んで条件式 「[ "${var_test}" = "" ]」とすると、条件式は「 "" = ""」と判定され、正常に動作する。
#!/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 件のコメント :
コメントを投稿