bedingter binärer Operator erwartet

bedingter binärer Operator erwartet
var="$(command1 -l '$var2' -c 'command2|grep -c "search"')"
if [[ var !=0 ]]; then
fi

Warum erhalte ich die Meldung „Bedingter Binäroperator erwartet“. Ich habe bereits gesucht und sehe, dass [[]] eine Testanweisung ist, aber warum sollte sie nicht funktionieren?

Antwort1

  1. Ihnen fehlt $beim Aufruf vor var das , so wie Sie es geschrieben haben, es wird wörtlich lauten var.
  2. In Betracht ziehenMögliche SchwachstellenIhres Skripts, wenn Sie [[ ... ]]oder (( ... ))zusammen mit Variablen verwenden, die Sie nicht steuern können. In Ihrem Fall ist es möglicherweise besser, zu verwenden [ "$var" -ne 0 ].
  3. Bei Ihnen fehlt ein Leerzeichen zwischen !=„und“ 0(hier liegt die Fehlerquelle!)
  4. !=ist einZeichenfolgenvergleichsoperator, obwohl es in Ihrem Beispiel funktionieren könnte, Sie möchten es -nezum Vergleichen von Ganzzahlen verwenden.

Gebrauch machen vonShellcheck.

verwandte Informationen