[: =: unärer Operator erwartet [doppelt]

Diese Frage hat hier bereits Antworten :

Antwort

In Ihren Tests, wenn Die Befehlssubstitution $(adb -s ...) generiert eine Zeichenfolge mit mehreren Wörtern. Die Shell behandelt sie als Syntaxfehler. Sie müssen die Erweiterungen angeben:

[ "$(adb -s ...)" = *"Is the system running?"* ] 

Das Ergebnis einer nicht zitierten Befehlssubstitution wird genau wie eine nicht zitierte Variablenerweiterung aufgeteilt und mit Dateinamen versehen. Das Zitieren der Erweiterung vermeidet dies. In Ihrem Fall ist es die Aufteilung, die Probleme verursacht.

Wenn die Befehlssubstitution erweitert ist, sieht der Test möglicherweise so aus wie

if [ word1 word2 word3 = *"some string"* ] 

Dies ist eindeutig ein Syntaxfehler.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.