1. ホーム
  2. シェル

エラー時の対処法「[: =: 単項演算子が期待される" というシェルスクリプトのエラーの解決法

2022-02-26 09:14:49

    文字列の等値性マッチングを行う場合、私は次のようなステートメントを使用していました。

if [ $STATUS == "OK" ]; then     

echo "OK"

フィ

    というエラーが出たとき、 "[: =: unary operator expected"というエラーが実行時に出たとき、原因がわからず、等号の両側のスペースや括弧の中のスペースを削除してみたが、うまくいかなかった。やっと、バイドゥの後、原因がわかり、条件式の外にもう一段"[]"を追加したら、以下のように、エラーが出なくなった。

if [[ $STATUS = "OK" ]];  <スパン では  

echo "OK"。

フィ 

    その理由は、変数STATUSの値がNULLの場合は 条件式 は [ = "OK" ] となり、明らかに [ と "OK" は等しくなく、[ = "OK" ] が抜けています。  [記号が抜けているため、エラーになります。もちろん、いつもそうとは限りませんし、変数STATUSが空でなければプログラムは正常に動作しますので、やはりエラーはかなり隠されています。

    また、このようなエラーを回避するために

if [ "$STATUS"x == "OK"x ]; then   

エコー

OK"

fi.

もちろん、xは他の文字でもかまいません。ちなみに、シェルのダブルクォートの有無は、多くの場合、統一されています。

<スパン から取得した。 http://hi.baidu.com/vishare/blog/item/bd8ab9ee289753252cf53417.html