Comme dans beaucoup d'autres langages, les conditions sont utilisées pour réaliser des branchements conditionnels. Il existe différentes structures conditionnelle en Bash.
Voici la syntaxe de base :
if [ condition ]; then # Instruction si condition est vrai fi
Pour des branchement de type Si, sinon si, voici la syntaxe :
if [ condition ]; then # Instruction si condition est vrai else # Exécutée dans le cas contraire fi
Enfin pour effectuer des successions de test :
if [ condition1 ]; then # Instruction si condition1 est vrai elif [ condition2 ]; then # Instruction si condition2 est vrai else # Exécuté si aucune condition n'a été vérifié fi
Tout repose sur la maîtrise de la rédaction des conditions. Selon la nature de l'expression à tester, la syntaxe peut variée et parfois paraître mystérieuse.
Voici quelques exemples de test de variable.
#!/bin/bash # On test si $1 n'est pas vide if [ -n "$1" ]; then echo "paramètre 1 vaut : $1" fi
Dans cet exemple le -n évalue si le paramètre $1 est vide.
| Opérateur de test | Effet |
|---|---|
= | Test l'égalité #!/bin/bash operande1=25 operande2="25" if [ "$operande1" = "$operande2" ]; then echo "Sont égaux" fiCet exemple en profite pour rappeler qu'en bash, toutes les variables sont traitées comme des chaînes. |
!= | Test une différence #!/bin/bash if [ "$EUID" != 0 ]; then echo "Vous devez être superutilisateur" 1>&2 exit 1 fiLe teste de la variable globale $EUID permet de déterminer si l'utilisateur est root (seul root a un EUID à 0). A noter également la redirection de la sortie standard(1) vers la sortie d'erreur (2) avec l' expression 1>&2 |
-z | Test si la variable est vide #!/bin/bash # Prompt utilisateur echo -n "Entrez un emplacement : " # On attend la saisie read chemin # Si chemin est vide if [ -z $chemin ]; then echo "Vous devez renseigner un chemin." 1>&2 exit 1 fiAttention l'opérateur -z est placé avant l'expression à évaluer. |
-n | Test si la variable est non-vide |