J'ai essayé d'utiliser ceci :
$ if [$a == 1] then { echo 'yes'; } fi;
mais j'obtiens une erreur :
-bash: syntax error near unexpected token `}'
Quel est le bon format ? J'en ai essayé plusieurs sans succès.
Réponse acceptée :
[
est juste un autre caractère, selon bash ; ce n'est pas auto-délimité. Vous devez donc mettre des espaces autour de [
et ]
. Bien que vous feriez mieux d'utiliser [[
et ]]
.
Et la commande suivant if
(oui, [
est une commande) doit se terminer par un ;
ou une nouvelle ligne.
Enfin, ==
(qui n'est pas posix, FWIW ; posix préfère =
) est une égalité de chaîne, pas une égalité numérique.
Donc, vous avez peut-être voulu dire :
if [[ $a -eq 1 ]]; then echo yes; fi
Mais vous pouvez utiliser une évaluation arithmétique à la place :
if ((a == 1)); then echo yes; fi
(Dans l'évaluation arithmétique, l'égalité est ==
, et vous n'avez pas besoin de $
avant les noms de variables. Je sais que c'est déroutant.)
Pour plus d'informations sur [
:help test
. À propos de [[
:aide [[
(qui s'appuie sur test
). À propos de ((
:help let
. À propos de bash
:man bash