条件付き二項演算子が必要です

条件付き二項演算子が必要です
var="$(command1 -l '$var2' -c 'command2|grep -c "search"')"
if [[ var !=0 ]]; then
fi

「条件付きバイナリ演算子が必要です」と表示されるのはなぜですか。すでに検索しましたが、[[]] がテスト ステートメントであることはわかりましたが、なぜ機能しないのでしょうか。

答え1

  1. $呼び出し時に var の前に抜けています。書いたとおり、文字通り になりますvar
  2. 考慮する潜在的な脆弱性[[ ... ]]または を制御できない変数と一緒に使用する場合、スクリプトの を使用します(( ... ))。この場合、 を使用する方がよい場合があります[ "$var" -ne 0 ]
  3. !=との間にスペースがありません0(これがエラーの原因です)。
  4. !=文字列比較演算子、あなたの例では機能するかもしれませんが、整数を比較するために使用する必要があります-ne

活用するシェルチェック

関連情報