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