Bonjour,
Par ailleurs, on trouvera des crochets en lieu et place des habituelles parenthèses.
non.
d'ailleurs "habituelles" par rapport à quoi ?
la syntaxe de if est
if COMMANDES; then COMMANDES; [ elif COMMANDES; then COMMANDES; ]... [ else COMMANDES; ] fi
c'est-à-dire que les crochets, en fait, sont une commande, et plus exactement un synonyme de la commande test.
donc, il est possible d'écrire
if grep -q ":${USER}:" /etc/passwd; then echo "$USER est un utilisateur"; else echo "$USER n'est pas un utilisateur"; fi
c'est pourquoi on est quelques uns à préconiser l'emploi de test, plutôt que les crochets, pour éviter ce contresens. à un caractère près , c'est égal, et plus éloquent.
il vaut mieux ne pas utiliser == avec test pour ne pas confondre le comportement qu'ils ont entre double crochets.
c'est bien de souligner que, lorsqu'on emploi la commande test (ou son synonyme), les variables doivent toujours être mises entre guillemets. si, si, c'est une obligation, sous risque d'erreur; tu l'indiques justement.
ce n'est pas le cas pour les doubles crochets. (voir plus bas)
un simili d'expression régulière
pourquoi "simili" ?
il est possible d'omettre les guillemets autour des variables, car les espaces ne causent plus problème. C'est cependant une bonne habitude à conserver, car ailleurs dans les scripts, il est plus prudent de les mettre.
bof.
les conditions simples ne requièrent pas if.
pour reprendre mon exemple précédent :
grep -q ":${USER}:" /etc/passwd && echo "$USER existe" || echo "$USER n'existe pas"
Partager