GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash:Syntaxfehler bei unerwartetem Token „}“?

Ich habe versucht, dies zu verwenden:

$ if [$a == 1] then { echo 'yes'; } fi;

aber ich erhalte eine Fehlermeldung:

-bash: syntax error near unexpected token `}'

Was ist das richtige Format? Ich habe mehrere ohne Erfolg versucht.

Akzeptierte Antwort:

[ ist laut bash nur ein weiteres Zeichen; es ist nicht selbstbegrenzend. Sie müssen also Leerzeichen um [ setzen und ] . Obwohl Sie besser dran wären, [[ und ]] .

Und der Befehl nach if (ja, [ ist ein Befehl) muss mit einem ; abgeschlossen werden oder ein Zeilenumbruch.

Zum Schluss == (was nicht posix ist, FWIW; posix bevorzugt = ) ist Zeichenfolgengleichheit, keine numerische Gleichheit.

Du könntest also gemeint haben:

if [[ $a -eq 1 ]]; then echo yes; fi

Aber Sie könnten stattdessen eine arithmetische Auswertung verwenden:

if ((a == 1)); then echo yes; fi

(Bei der arithmetischen Auswertung ist die Gleichheit == , und Sie brauchen $ nicht vor Variablennamen. Ich weiß, es ist verwirrend.)

Weitere Informationen zu [ :help test . Über [[ :Hilfe [[ (die auf test aufbaut ). Über (( :help let . Über bash :man bash


Linux
  1. Fehlerbehandlung in Bash-Skripten

  2. Lernen Sie die Bash-Fehlerbehandlung anhand eines Beispiels kennen

  3. Mehrere logische Operatoren, ((a || B) &&C) und „Syntaxfehler in der Nähe eines unerwarteten Tokens“?

  4. „Syntaxfehler in der Nähe eines unerwarteten Tokens“ nach dem Bearbeiten von .bashrc?

  5. Bash ignoriert Fehler für einen bestimmten Befehl

Bash-Declare-Anweisung:Syntax und Beispiele

Syntax und Beispiele für Bash-Case-Anweisungen

Fehlerbehebung „Bash:Command Not Found“-Fehler in Linux

Bash If Else Syntax mit Beispielen

Wie überprüfe ich die Syntax eines Bash-Skripts, ohne es auszuführen?

Fehler in einem Bash-Skript auslösen