Les lignes ci-dessous comportent des erreurs :
$ if [ a == a]; then echo true; fiLe problème ici se situe au niveau du test. Il manque un espace entre les caractères 'a' et ']'. La bonne syntaxe est donc :
$ if [ a == a ]; then echo true; fi
$ if [ a == a ]; echo true; fiIci, il manque le mot-clef then. La bonne syntaxe est la même que précédemment :
$ if [ a == a ]; then echo true; fi
$ a=3; echo '$a' # On souhaite afficher la valeur de aPour afficher le contenu de la variable a, il est inutile de l'entourer de simples guillemets. La bonne syntaxe est :
$ a=3; echo $a # On souhaite afficher la valeur de a
$ if [ a != b ]; then echo true; fiA priori, le code est correct. Néanmoins, il faut faire attention à ne pas confondre [ a != b ] et [ $a != $b ].
$ a=3; (echo $a); a=3; (a=2; echo $a);Dans ce script, la première valeur de a vaut 3 et la deuxième vaut 2. Les parenthèses indiquent qu'on a affaire à un sous-shell. Autrement dit, toute modification d'une variable ne sera prise en compte que localement. Il s'agira en fait d'une copie locale qui sera détruite au terme du script sous-shell.