Le type de condition le plus courant est le
if, qui signifie "si".
Si
Les conditions ont la forme suivante :
CitationSI test_de_variable
ALORS
------> effectuer_une_action
FIN SI
Bien entendu, ce n'est pas du bash ça. C'est juste un schéma pour vous montrer quelle est la forme d'une condition.
La syntaxe en bash est la suivante :
Code : Bash1
2
3
4 | if [ test ]
then
echo "C'est vrai"
fi
|
Le mot "fi" (if à l'envers !) à la fin indique que le if s'arrête là. Tout ce qui est entre le then et le fi sera exécuté uniquement si le test est vérifié.
Vous noterez, c'est très important, qu'il y a des espaces à l'intérieur des crochets. On ne doit pas écrire [test] mais [ test ] !
A la place du mot "
test", il faut indiquer votre test. C'est à cet endroit que vous testerez la valeur d'une variable par exemple. Nous allons voir ici un cas simple où nous testons la valeur d'une chaîne de caractères, puis nous apprendrons à faire des tests plus compliqués un peu plus loin.
Faisons quelques tests sur un script que nous appellerons "conditions.sh" :
Code : Bash1
2
3
4
5
6
7
8 | #!/bin/bash
nom="Bruno"
if [ $nom = "Bruno" ]
then
echo "Salut Bruno !"
fi
|
Comme $nom est bien égal à "Bruno", ce script affichera :
Code : Console
Essayez de changer le test, si vous n'écrivez pas précisément "Bruno", le if ne sera pas exécuté, et donc votre script n'affichera rien.
Notez aussi que vous pouvez tester 2 variables à la fois dans le if :
Code : Bash1
2
3
4
5
6
7
8
9 | #!/bin/bash
nom1="Bruno"
nom2="Marcel"
if [ $nom1 = $nom2 ]
then
echo "Salut les jumeaux !"
fi
|
Comme ici $nom1 est différent de $nom2, le contenu du if ne sera pas exécuté. Le script n'affichera donc rien.
Sinon
Si vous souhaitez faire quelque chose de particulier quand la condition n'est
pas remplie, vous pouvez rajouter un "else" qui signifie "sinon".
En français, ça s'écrirait comme ceci :
CitationSI test_de_variable
ALORS
------> effectuer_une_action
SINON
------> effectuer_une_action
FIN SI
Code : Bash1
2
3
4
5
6 | if [ test ]
then
echo "C'est vrai"
else
echo "C'est faux"
fi
|
Reprenons notre script de tout à l'heure, et ajoutons-lui un else :
Code : Bash 1
2
3
4
5
6
7
8
9
10 | #!/bin/bash
nom="Bruno"
if [ $nom = "Bruno" ]
then
echo "Salut Bruno !"
else
echo "J'te connais pas, ouste !"
fi
|
Bon, comme la variable vaut toujours la même chose, le else ne sera jamais exécuté, ce n'est pas rigolo. Je vous propose plutôt de vous baser sur le premier paramètre ($1) envoyé au script :
Code : Bash1
2
3
4
5
6
7
8 | #!/bin/bash
if [ $1 = "Bruno" ]
then
echo "Salut Bruno !"
else
echo "J'te connais pas, ouste !"
fi
|
Testez maintenant votre script en lui donnant un paramètre :
Code : Console | $ ./conditions.sh Bruno
Salut Bruno ! |
Et si vous mettez autre chose :
Code : Console | $ ./conditions.sh Jean
J'te connais pas, ouste ! |
Notez que le script plante si vous oubliez de l'appeler avec un paramètre. Pour bien faire, il faudrait d'abord vérifier dans un if s'il y a au moins un paramètre. Nous apprendrons à faire cela plus loin.
Sinon si
Il existe aussi le mot-clé "elif", abréviation de "else if", qui signifie "sinon si". Sa forme ressemble à cela :
CitationSI test_de_variable
ALORS
------> effectuer_une_action
SINON SI autre_test
ALORS
------> effectuer_une_action
SINON SI encore_un_autre_test
ALORS
------> effectuer_une_action
SINON
------> effectuer_une_action
FIN SI
C'est un peu plus compliqué hein ?
Sachez qu'on peut mettre autant de "sinon si" qu'on veut. Là j'en ai mis deux. En revanche, on ne peut mettre qu'un seul "sinon", qui sera exécuté à la fin si aucune des conditions précédentes n'est vérifiée.
Bash va d'abord analyser le premier test. S'il est vérifié, il effectuera la première action indiquée, sinon il ira au premier sinon si, au second, etc., jusqu'à trouver une condition qui soit vérifiée. Si aucune condition n'est vérifiée, c'est le "sinon" qui sera lu.
Bien, voyons comment cela s'écrit en bash :
Code : Bash 1
2
3
4
5
6
7
8
9
10
11
12 | if [ test ]
then
echo "Le premier test a été vérifié"
elif [ autre_test ]
then
echo "Le second test a été vérifié"
elif [ encore_autre_test ]
then
echo "Le troisième test a été vérifié"
else
echo "Aucun des tests précédents n'a été vérifié"
fi
|
On peut reprendre notre script précédent et l'adapter pour utiliser des elif :
Code : Bash 1
2
3
4
5
6
7
8
9
10
11
12
13
14 | #!/bin/bash
if [ $1 = "Bruno" ]
then
echo "Salut Bruno !"
elif [ $1 = "Michel" ]
then
echo "Bien le bonjour Michel"
elif [ $1 = "Jean" ]
then
echo "Hé Jean, ça va ?"
else
echo "J'te connais pas, ouste !"
fi
|
Vous pouvez tester ce script, encore une fois n'oubliez pas d'envoyer un paramètre sinon il plantera, ce qui est normal.