GNU/Linux >> Tutoriels Linux >  >> Linux

Déclaration Bash if elif else :un didacticiel complet

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îne Defined .
  • Lignes 2 à 4 imprimez les variables sur la console. À ce moment, outer_variable contient une chaîne, tandis que inner_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 la outer_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 sortie 0 .
  • 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éfinit a à 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.


Linux
  1. Instruction Bash If-Else avec des exemples

  2. 4 Exemples d'instructions Awk If ( if, if else, if else if, :? )

  3. Tutoriel sur l'état de sortie de Bash Shell avec des exemples pratiques

  4. 5 exemples d'instructions Bash Case

  5. Existe-t-il une instruction goto dans bash?

Commande de sortie Bash et codes de sortie

Tutoriel de script Bash pour les débutants

Tutoriel Bash Heredoc pour les débutants

Bash Scripting - Déclaration de cas

Syntaxe Bash If Else avec exemples

Comprendre Bash If Else et d'autres instructions conditionnelles