単項演算子の問題に関するエラーが発生する以下のスクリプトを実行しています。デフォルトのシェルスクリプトでは、以下の既存の_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;
シェルの変数の割り当ては周囲のスペースを占有しません。