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
- Ihnen fehlt
$
beim Aufruf vor var das , so wie Sie es geschrieben haben, es wird wörtlich lautenvar
. - 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 ]
. - Bei Ihnen fehlt ein Leerzeichen zwischen
!=
„und“0
(hier liegt die Fehlerquelle!) !=
ist einZeichenfolgenvergleichsoperator, obwohl es in Ihrem Beispiel funktionieren könnte, Sie möchten es-ne
zum Vergleichen von Ganzzahlen verwenden.
Gebrauch machen vonShellcheck.