条件演算子の場合:宣言されていない変数を指定するときは、単項演算子が必要です。

条件演算子の場合:宣言されていない変数を指定するときは、単項演算子が必要です。

単項演算子の問題に関するエラーが発生する以下のスクリプトを実行しています。デフォルトのシェルスクリプトでは、以下の既存の_sum_check変数を使用しますが、とにかくこのチェックを実行したいと思います。このエラーを回避するにはどうすればよいですか?

プログラム:

#!/bin/sh

latest_sum_check=10101;

if [ $latest_sum_check != $EXISTING_SUM_CHECK ]; then
    EXISTING_SUM_CHECK = $latest_sum_check;

    echo $EXISTING_SUM_CHECK;
    echo "Please process";
else
    echo "Do not process"
fi

ベストアンサー1

あなたは基本的にすでにそれを持っています[ something != $bar ]

空の場合に$barなりますif [ something != ]。もちろん、同等性テストには2つのオペランドが必要なため、機能しません。 Bashのtest/には少なくとも[これを説明する興味深い方法がありますが、引数の数を確認して引数が2つだけなので、最初の引数が単項演算子であると予想します。一つもないのでsomething文句を言います。

したがって、変数の周りに引用符を入れてください。:

if [ "$latest_sum_check" != "$EXISTING_SUM_CHECK" ]; then ...

EXISTING_SUM_CHECKこれは、等号と変数拡張からのすべてを引数として使用してコマンドを実行します。

 EXISTING_SUM_CHECK = $latest_sum_check;

シェルの変数の割り当ては周囲のスペースを占有しません。

おすすめ記事