Android

Instruction Bash if..else

Introduction to Bash Scripting 06 - A Simple "If" Statement

Introduction to Bash Scripting 06 - A Simple "If" Statement

Table des matières:

Anonim

La prise de décision est l'un des concepts les plus fondamentaux de la programmation informatique. Comme dans tout autre langage de programmation, les if..else if , if..else , if..elif..else et nested if dans Bash peuvent être utilisées pour exécuter du code basé sur une certaine condition.

Dans ce didacticiel, nous vous expliquerons les bases des instructions Bash if et vous montrerons comment les utiliser dans vos scripts shell.

if

Bash if conditions peuvent avoir différentes formes. L'instruction if plus élémentaire prend la forme suivante:

if TEST-COMMAND then STATEMENTS fi

L'instruction if commence par le mot clé if suivi de l'expression conditionnelle et du mot clé then . L'instruction se termine par le mot clé fi .

Si la TEST-COMMAND évaluée à True , les STATEMENTS sont exécutés. Si TEST-COMMAND renvoie False , rien ne se passe, les STATEMENTS sont ignorés.

En général, il est recommandé de toujours mettre en retrait votre code et de séparer les blocs de code avec des lignes vides. La plupart des gens choisissent d'utiliser une indentation de 4 espaces ou de 2 espaces. Les retraits et les lignes vides rendent votre code plus lisible et organisé.

Examinons l'exemple de script suivant qui vérifie si un nombre donné est supérieur à 10.

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi

Enregistrez le code dans un fichier et exécutez-le à partir de la ligne de commande:

bash test.sh

Le script vous demandera d'entrer un nombre. Si, par exemple, vous entrez 15, la commande de test sera évaluée à true car 15 est supérieur à 10 et la commande echo à l'intérieur de la clause then sera exécutée.

The variable is greater than 10.

if..else Statement

L' if..else Bash if..else prend la forme suivante:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

Si la TEST-COMMAND évaluée à True , les STATEMENTS1 seront exécutés. Sinon, si TEST-COMMAND renvoie False , les STATEMENTS2 seront exécutés. Vous ne pouvez avoir qu'une seule clause else dans l'instruction.

Ajoutons une clause else à l'exemple de script précédent:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi

if..elif..else

L' if..elif..else Bash if..elif..else prend la forme suivante:

if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi

Si TEST-COMMAND1 évalué à True , les STATEMENTS1 seront exécutés. Si TEST-COMMAND2 évalué à True , les STATEMENTS2 seront exécutés. Si aucune des commandes de test n'est évaluée à True , les STATEMENTS2 sont exécutés.

Vous pouvez avoir une ou plusieurs clauses elif dans l'instruction. La clause else est facultative.

Les conditions sont évaluées séquentiellement. Une fois qu'une condition retourne True les conditions restantes ne sont pas remplies et le contrôle de programme se déplace à la fin des instructions if .

Ajoutons une clause elif au script précédent:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi

Imbriqué if instructions

Bash vous permet d'imbriquer des instructions if dans des instructions if . Vous pouvez placer plusieurs instructions if dans une autre instruction if .

Le script suivant vous invitera à saisir trois nombres et imprimera le plus grand nombre parmi les trois nombres.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi

Voici à quoi ressemblera la sortie:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. Au lieu d'utiliser des instructions if imbriquées, il est généralement plus efficace d'utiliser l'instruction case.

Conditions multiples

Les opérateurs logiques OR et AND vous permettent d'utiliser plusieurs conditions dans les instructions if .

Voici une autre version du script pour imprimer le plus grand nombre parmi les trois nombres. Dans cette version, au lieu des instructions if imbriquées, nous utiliserons l'opérateur logique AND ( && ).

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi

Opérateurs de test

Dans Bash, la commande de test prend l'une des formes de syntaxe suivantes:

test EXPRESSION]

Pour annuler l'expression de test, utilisez l'opérateur logique NOT ( ! ). Lorsque vous comparez des chaînes, utilisez toujours des guillemets simples ou doubles pour éviter tout problème de division ou de globalisation des mots.

Voici quelques-uns des opérateurs les plus couramment utilisés:

  • -n VAR - Vrai si la longueur de VAR est supérieure à zéro. -z VAR - Vrai si le VAR est vide. STRING1 = STRING2 - Vrai [STRING1 et STRING2 sont égaux. STRING1 != STRING2 - Vrai STRING1 et STRING2 ne sont pas égaux. INTEGER1 -eq INTEGER2 - True INTEGER1 et INTEGER2 sont égaux. INTEGER1 -gt INTEGER2 - True INTEGER1 est supérieur à INTEGER2. INTEGER1 -lt INTEGER2 - True INTEGER1 est inférieur à INTEGER2. INTEGER1 -ge INTEGER2 - True INTEGER1 est égal ou supérieur à INTEGER2. INTEGER1 -le INTEGER2 - True INTEGER1 est égal ou inférieur à INTEGER2. -h FILE - True si le FILE existe et est un lien symbolique. -r FILE - True si le FILE existe et est lisible. -w FILE - True si le FILE existe et est accessible en écriture. -x FILE - True si le FILE existe et est exécutable. -d FILE - True si le FILE existe et est un répertoire. -e FILE - Vrai si le FILE existe et est un fichier, quel que soit son type (nœud, répertoire, socket, etc.). -f FILE - True si le FILE existe et est un fichier normal (pas un répertoire ou un périphérique).

Conclusion

Les if..else if , if..else et if..elif..else vous permettent de contrôler le flux d'exécution du script Bash en évaluant les conditions données.

terminal bash