GNU/Linux >> Tutoriels Linux >  >> Linux

Instruction Bash if..else

Ce tutoriel vous guidera à travers les bases du Bash if Statement et vous montrer comment l'utiliser dans vos scripts shell.

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

if Relevé #

Bash if les conditionnels peuvent avoir différentes formes. Le if le plus basique déclaration prend la forme suivante :

if TEST-COMMAND
then
  STATEMENTS
fi

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

Si la TEST-COMMAND est évalué à True , les STATEMENTS se fait exécuter. Si TEST-COMMAND renvoie False , il ne se passe rien; les STATEMENTS être ignoré.

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

Regardons 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 [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
fi

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

bash test.sh

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

The variable is greater than 10.

if..else Relevé #

Le Bash if..else déclaration prend la forme suivante :

if TEST-COMMAND
then
  STATEMENTS1
else
  STATEMENTS2
fi

Si la TEST-COMMAND est évalué à True , le STATEMENTS1 sera exécuté. Sinon, si TEST-COMMAND renvoie False , le STATEMENTS2 sera exécuté. Vous ne pouvez avoir qu'un seul else clause dans la déclaration.

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

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
else
  echo "The variable is equal or less than 10."
fi

Si vous exécutez le code et entrez un nombre, le script imprimera un message différent selon que le nombre est supérieur ou inférieur/égal à 10.

if..elif..else Relevé #

Le Bash if..elif..else déclaration prend la forme suivante :

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

Si la TEST-COMMAND1 est évalué à True , le STATEMENTS1 sera exécuté. Si la TEST-COMMAND2 est évalué à True , le STATEMENTS2 sera exécuté. Si aucune des commandes de test n'a la valeur True , le STATEMENTS2 est exécuté.

Vous pouvez avoir un ou plusieurs elif clauses dans la déclaration. Le else clause est facultative.

Les conditions sont évaluées séquentiellement. Une fois qu'une condition renvoie True , les conditions restantes ne sont pas exécutées et le contrôle du programme se déplace à la fin du if déclarations.

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

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
elif [[ $VAR -eq 10 ]]
then
  echo "The variable is equal to 10."
else
  echo "The variable is less than 10."
fi

if imbriqué Relevés #

Bash vous permet d'imbriquer if déclarations dans if déclarations. Vous pouvez placer plusieurs if déclarations à l'intérieur d'un autre if déclaration.

Le script suivant vous demandera d'entrer trois nombres et d'imprimer 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 [[ $VAR1 -ge $VAR2 ]]
then
  if [[ $VAR1 -ge $VAR3 ]]
  then
    echo "$VAR1 is the largest number."
  else
    echo "$VAR3 is the largest number."
  fi
else
  if [[ $VAR2 -ge $VAR3 ]]
  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.
Généralement, il est plus efficace d'utiliser le case déclaration au lieu de if imbriqué déclarations.

Plusieurs conditions #

Le OR logique et AND les opérateurs vous permettent d'utiliser plusieurs conditions dans le if déclarations.

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

#!/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 [[ $VAR1 -ge $VAR2 ]] && [[ $VAR1 -ge $VAR3 ]]
then
  echo "$VAR1 is the largest number."
elif [[ $VAR2 -ge $VAR1 ]] && [[ $VAR2 -ge $VAR3 ]]
then
  echo "$VAR2 is the largest number."
else
  echo "$VAR3 is the largest number."
fi

Opérateurs de test #

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

test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]

Pour rendre le script portable, préférez utiliser l'ancien test [ , qui est disponible sur tous les shells POSIX. La nouvelle version mise à jour du test commande [[ (double crochets) est pris en charge sur la plupart des systèmes modernes utilisant Bash, Zsh et Ksh comme shell par défaut.

Pour annuler l'expression de test, utilisez le NOT logique (! ) opérateur. Lorsque vous comparez des chaînes, utilisez toujours des guillemets simples ou doubles pour éviter les problèmes de division et 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érieur à zéro.
  • -z VAR - Vrai si la VAR est vide.
  • STRING1 = STRING2 - Vrai si STRING1 et STRING2 sont égaux.
  • STRING1 != STRING2 - Vrai si STRING1 et STRING2 ne sont pas égaux.
  • INTEGER1 -eq INTEGER2 - Vrai si INTEGER1 et INTEGER2 sont égaux.
  • INTEGER1 -gt INTEGER2 - Vrai si INTEGER1 est supérieur à INTEGER2 .
  • INTEGER1 -lt INTEGER2 - Vrai si INTEGER1 est inférieur à INTEGER2 .
  • INTEGER1 -ge INTEGER2 - Vrai si INTEGER1 est égal ou supérieur à INTEGER2.
  • INTEGER1 -le INTEGER2 - Vrai si INTEGER1 est égal ou inférieur à INTEGER2 .
  • -h FILE - Vrai si le FILE existe et est un lien symbolique.
  • -r FILE - Vrai si le FILE existe et est lisible.
  • -w FILE - Vrai si le FILE existe et est accessible en écriture.
  • -x FILE - Vrai si le FILE existe et est exécutable.
  • -d FILE - Vrai 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 - Vrai si le FILE existe et est un fichier normal (pas un répertoire ou un périphérique).

Conclusion #

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

Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.


Linux
  1. Comment utiliser l'instruction conditionnelle if else dans le script bash

  2. Instruction Bash If-Else avec des exemples

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

  4. 5 exemples d'instructions Bash Case

  5. Instruction Bash/sh 'if else'

Bash Shebang

Instruction Python if..else

Bash Scripting - Déclaration de cas

Comment travailler avec l'instruction Case dans les scripts Bash

Syntaxe Bash If Else avec exemples

Comprendre Bash If Else et d'autres instructions conditionnelles