Présentation
Les scripts bash aident à automatiser les tâches sur votre machine. Le if elif else
L'instruction dans les scripts bash permet de créer des cas conditionnels et des réponses à des résultats de code spécifiques. Le if
le conditionnel permet d'automatiser un processus de prise de décision au cours d'un programme.
Cet article explique ce que le if elif else
est et montre la syntaxe à travers divers exemples.
Prérequis
- Une machine avec un système d'exploitation Linux.
- Accès à la ligne de commande/au terminal.
- Accès à un éditeur de texte comme Vi/Vim.
Qu'est-ce que l'instruction Bash if ?
En programmation, le if
instruction est une expression conditionnelle. Cependant, la commande testée dans le if
l'instruction est évaluée en fonction du statut de sortie . Par conséquent :
- Si la commande se termine avec succès , le statut de sortie est 0 .
- Si l'instruction renvoie une erreur , le statut de sortie est n'importe quel nombre entre 1 et 255 .
Le zéro pour le succès et toute valeur non nulle pour l'échec semblent contre-intuitifs. Dans la plupart des autres langages de programmation, zéro représente faux et un (ou plus) représente vrai. Cependant, dans les scripts bash, la convention UNIX renvoie le statut de sortie au lieu d'une valeur de vérité, et les deux ne doivent pas être confondus.
Testez un exemple de commande d'erreur (1 supérieur à 100) dans le terminal en exécutant :
test 1 -gt 100
Vérifiez l'état de sortie à l'aide de la commande echo :
echo $?
Le test renvoie un code de sortie 1
, indiquant que l'expression a échoué.
De même, vérifiez un exemple de commande qui s'évalue avec succès (1000 supérieur à 100) dans le terminal avec :
test 1000 -gt 100
Imprimez l'état de sortie pour confirmer que la commande a réussi :
echo $?
Le test renvoie un code de sortie 0
, montrant la commande terminée sans erreur.
Exemple d'instruction Bash if
Suivez les instructions ci-dessous pour créer un exemple de script bash en utilisant un if
déclaration.
1. Ouvrez le terminal (CTRL +ALT +T ) et créez un exemple de script pour tester comment le bash if
l'instruction fonctionne :
vi test_script.sh
2. Dans le script, ajoutez les lignes suivantes :
echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if test $VAR -gt 100
then
echo "It's greater than 100"
fi
echo Bye!
Chaque ligne du script effectue les actions suivantes :
- Lignes 1 à 3 fournir des instructions pour entrer un nombre via la console. Le nombre est lu dans une variable appelée
VAR
et imprimé. - Ligne 4 démarre le
if
et vérifie l'état de sortie de la commande juste après ($VAR -gt 100
). - Lignes 5-6 signale le début des commandes à exécuter uniquement si l'instruction de la ligne 4 se termine avec succès (avec un état de sortie 0), ce qui signifie que nous avons entré un nombre supérieur à 100.
- Ligne 7 signale la fin du
if
déclaration. - Ligne 8 est en dehors de l'instruction et s'exécute comme prévu, quel que soit le
if
résultat.
3. Enregistrez et fermez Vim :
:wq
4. Ensuite, rendez le fichier exécutable :
chmod +x test_script.sh
5. Enfin, exécutez le script avec :
./test_script.sh
Le script génère un message différent en fonction du numéro saisi. Exécutez le script plusieurs fois et testez d'autres nombres pour confirmer le comportement.
Syntaxe de l'instruction Bash if
La syntaxe de base pour un bash if
déclaration est :
if <commands>
then
<commands>
fi
Chaque mot-clé a une fonction spécifique :
if
signale le début de l'énoncé. La commande juste après est celle dans laquelle la vérification du statut de sortie s'applique.then
exécute les commandes uniquement si la révision précédente s'est terminée avec succès.fi
ferme l'instruction if.
Le fait de placer la commande de test entre différents crochets entraîne différentes méthodes d'exécution pour le if
déclaration. Le tableau ci-dessous fournit une brève description ainsi qu'un cas d'utilisation pour chaque type de support.
Syntaxe | Qu'est-ce que c'est | Quand utiliser |
---|---|---|
if ( <commands> ) | Sous-shell exécuté dans un sous-processus. | Lorsque les commandes affectent le shell ou l'environnement actuel. Les modifications ne restent pas lorsque le sous-shell se termine. |
if (( <commands> )) | Extension bash. | À utiliser pour les opérations arithmétiques et la manipulation de variables de style C. |
if [ <commands> ] | POSIX intégré, alias pour test <commands> . | Comparer des nombres et tester si un fichier existe. |
if [[ <commands> ]] | Extension bash, une version avancée des crochets simples. | Chaîne correspondant à un modèle générique. |
Vous trouverez ci-dessous des exemples de scripts bash qui utilisent chaque type de parenthèse avec une explication plus détaillée.
Syntaxe des parenthèses simples
L'utilisation de parenthèses simples dans les scripts bash crée un sous-shell. Lorsqu'il est combiné avec le if
instruction, le sous-processus se termine avant de poursuivre le programme. Le if
analyse le statut de sortie et agit en conséquence.
Le bash if
déclaration avec une syntaxe de parenthèses simples ressemble à ce qui suit :
if ( <commands> )
then
<commands>
fi
Essayez l'exemple ci-dessous pour voir comment le sous-processus se comporte avec le if
déclaration :
1. Créez le script à l'aide de Vim :
vi single_parentheses.sh
2. Ajoutez les lignes de code suivantes au script :
outer_variable=Defined
echo Before if:
echo inner_variable = $inner_variable
echo outer_variable = $outer_variable
if (
echo Inside subshell:
inner_variable=Defined
echo inner_variable = $inner_variable
outer_variable=Changed
echo outer_variable = $outer_variable
)
then
echo After then:
echo inner_variable = $iner_variable
echo outer_variable = $outer_variable
fi
echo After fi:
echo inner_variable = $inner_variable
echo outer_variable = $outer_variable
Le programme effectue les opérations suivantes :
- Ligne 1 crée une variable appelée
outer_variable
dans lequel on stocke une chaîneDefined
. - Lignes 2 à 4 imprimez les variables sur la console. À ce moment,
outer_variable
contient une chaîne, tandis queinner_variable
est vide. - Ligne 5 démarre le
if
déclaration et un sous-processus, délimités par des parenthèses simples. - Ligne 6-11 stocker une chaîne dans la
inner_variable
et modifiez laouter_variable
à une chaîne différente. Les deux valeurs s'impriment sur la console et le sous-processus se termine par un code de sortie. Dans ce cas, le sous-processus se termine avec succès avec un code de sortie0
. - Ligne 12-16 exécuter après le sous-processus et imprimer les valeurs des variables. Cependant, les valeurs reviennent à ce qu'elles étaient avant le
if
déclaration. Le sous-processus ne stocke les valeurs que localement et non globalement. - Lignes 16 à 19 exécuter après les commandes dans le
then
clause. Les valeurs restent inchangées en dehors de l'instruction.
3. Enregistrez le script et fermez l'éditeur :
:wq
4. Rendez le script exécutable :
chmod +x single_parentheses.sh
5. Enfin, exécutez l'exemple pour tester les résultats :
./single_parentheses.sh
La sortie imprime les états des variables au fur et à mesure que le programme progresse.
Syntaxe des doubles parenthèses
La syntaxe des doubles parenthèses pour un bash if
déclaration est :
if (( <commands> ))
then
<commands>
fi
La construction de doubles parenthèses dans bash permet :
- Évaluation arithmétique . Définir une variable comme
a=$(( 1+1 ))
calcule l'équation et définita
à 2. - Manipulation de variables de style C. Par exemple, incrémenter des variables avec
(( a++ ))
.
Lors de l'utilisation de la syntaxe des doubles parenthèses dans un if
déclaration, l'évaluation se comporte différemment. Supposons que l'expression est évaluée à 0
, puis le if
le test échoue.
Essayez l'exemple suivant pour voir comment fonctionnent les doubles parenthèses :
1. Créez un script bash dans le terminal :
vi double_parentheses.sh
2. Ajoutez le code suivant à double_parentheses.sh :
variable=-2
echo Before first if: $variable
if (( variable++ ))
then
echo Incremented ++ style: $variable
fi
echo After first if: $variable
if (( variable=variable+1 ))
then
echo Incremented arithmetically $variable
fi
echo After second if: $variable
Chaque numéro de ligne dans le script fait ce qui suit :
- Ligne 1 définit une variable et définit la valeur sur
-2
. - Lignes 3 à 5 incrémente la valeur de style C à l'intérieur de doubles parenthèses et vérifie la valeur. Si la variable n'est pas nulle, le if imprime un message sur la console.
- Lignes 8 à 10 incrémente la variable de un en utilisant la notation arithmétique régulière et imprime un message si la variable n'est pas nulle.
3. Enregistrez le script et fermez Vim :
:wq
4. Modifiez les autorisations de script en exécutable :
chmod +x double_parentheses.sh
5. Exécutez le script pour voir les résultats :
./double_parentheses.sh
Syntaxe à crochet unique
La parenthèse simple est un autre nom pour le test
commande et un utilitaire POSIX standard disponible pour tous les shells. La syntaxe de base est :
if [ <commands> ]
then
<commands>
fi
Le premier bash if
exemple fourni dans ce tutoriel (test_script.sh ) fonctionne aussi bien avec la syntaxe alternative :
echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if [ $VAR -gt 100 ]
then
echo "It's greater than 100"
fi
echo Bye!
Exécutez le script pour confirmer que la sortie est équivalente. Pour la documentation complète et les détails sur l'utilisation de la syntaxe des crochets, exécutez la commande man sur le test
utilitaire :
man test
Syntaxe à double crochet
La syntaxe à double crochet dans bash if
scripts est la meilleure option si la portabilité n'est pas nécessaire. Les supports doubles sont supérieurs aux supports simples et incluent de nombreuses options avancées. La syntaxe est :
if [[ <commands> ]]
then
<commands>
fi
Essayez l'exemple ci-dessous pour voir comment la correspondance de chaîne générique fonctionne dans un if
commande :
1. Créez un fichier de script shell appelé double_brackets :
vi double_brackets.sh
2. Ajoutez le code suivant :
if [[ $USER == k* ]]
then
echo Hello $USER
fi
echo Bye!
3. Le script vérifie si la première lettre du nom d'utilisateur est k
et envoie un message bonjour si c'est le cas. Enregistrez et fermez le script :
:wq
4. Rendez le fichier exécutable avec chmod :
chmod +x double_brackets.sh
5. Exécutez le programme avec :
./double_brackets.sh
Autres types d'instructions conditionnelles Bash
Le if
L'instruction n'effectue qu'une seule vérification conditionnelle. Modifier le if
avec d'autres types de conditions bash pour créer des évaluations complexes.
si sinon déclaration
Le if else
L'instruction fournit une méthode pour définir différentes actions en fonction de la sortie de la condition vérifiée. La syntaxe de base est :
if <command>
then
<commands>
else
<commands>
fi
L'exemple suivant montre comment le if else
travaux conditionnels :
1. Créez un nouveau script avec Vim :
vi if_else.sh
2. Insérez le code suivant dans le script :
echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if [ $VAR -gt 100 ]
then
echo "It's greater than 100"
else
echo "It's less than 100"
fi
echo Bye!
L'instruction vérifie la sortie de la commande à la ligne 4 et imprime un message descriptif basé sur le résultat :
- Si le nombre saisi est supérieur à 100 , le programme entre ligne 6 et imprime le message.
- Si le nombre est inférieur à 100 , le message dans le
else
clause (ligne 8 ) imprime sur la console.
3. Enregistrez le script et fermez Vim :
:wq
4. Rendez le script exécutable :
chmod +x if_else.sh
5. Enfin, exécutez le script plusieurs fois et testez différentes valeurs :
./if_else.sh
instruction if elif
Le elif
clause combinée avec le if else
L'instruction crée plusieurs vérifications conditionnelles. Le if elif
crée une série de vérifications avec des résultats différents. La syntaxe est :
if <command>
then
<commands>
elif <command>
then
<commands>
else
<commands>
fi
Pour créer un script à l'aide de elif
:
1. Créez un fichier shell nommé elif :
vi elif.sh
2. Dans le elif.sh fichier, ajoutez l'exemple de code suivant :
echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if [ $VAR -gt 100 ]
then
echo "It's greater than 100"
elif [ $VAR -lt 100 ]
then
echo "It's less than 100"
else
echo "It's exactly 100"
fi
echo Bye!
L'exemple ajoute un elif
vérifier sur ligne 7 pour voir si le nombre saisi est inférieur à 100. Si les instructions des lignes 4 et 7 échouent toutes les deux, le programme passe à la clause else.
3. Enregistrez et fermez le fichier :
:wq
4. Créez le elif.sh fichier exécutable :
chmod +x elif.sh
5. Exécutez le script plusieurs fois et vérifiez le comportement pour différents nombres :
./elif.sh
Ajouter plusieurs elif
clauses pour diversifier la déclaration pour des vérifications plus détaillées. Pour les instances où le if
et elif
la série de modèles grandit, la meilleure option est d'utiliser un case
déclaration.
Instruction if imbriquée
if
imbriqué les instructions ajoutent une branche à l'intérieur du if
. Plus précisément, lorsqu'une commande passe la première vérification if, elle passe par une nouvelle vérification pour filtrer davantage le résultat. La syntaxe est :
if <commands>
then
if <commands>
then
<commands>
fi
fi
Le si imbriqué est couramment utilisé pour rechercher dans des tableaux multidimensionnels. Cependant, essayez d'éviter d'avoir plus de deux ou trois if
imbriqués déclarations pour réduire la complexité du programme. Repensez la logique du code lorsque le if
imbriqué ne cesse de croître en profondeur.