Dans ce tutoriel, nous allons vous guider à travers les bases de la Bash if déclaration et de 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 imbriquées if états Bash peut être utilisé pour exécuter du code sur la base d’une certaine condition.,

si l’Instruction #

Bash if le conditionnel peut avoir différentes formes. Les plus de base if déclaration prend la forme suivante:

if TEST-COMMANDthen STATEMENTSfi

Le if déclaration commence par la balise if mot clé suivi de l’expression conditionnelle et le then mot clé. L’instruction se termine par le mot-cléfi.,

Si le TEST-COMMAND donne True, le STATEMENTS est exécuté. Si TEST-COMMAND renvoie False, rien ne se passe, la balise STATEMENTS est ignorée.

en général, il est recommandé de toujours indenter votre code et de séparer les blocs de code avec des lignes vides. La plupart des gens choisissent d’utiliser l’indentation à 4 espaces ou à 2 espaces. Les Indentations et les lignes vides rendent votre code plus lisible et organisé.,

prenons un exemple de script qui vérifie si un nombre donné est plus grand que 10:

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

Enregistrer le code dans un fichier et de l’exécuter à partir de la ligne de commande:

bash test.sh

Le script vous invite à entrer un numéro. Si, par exemple, vous entrez 15, la balise test commande évalue à true car 15 est supérieur à 10, et le echo commande à l’intérieur de la balise then clause sera exécuté.

The variable is greater than 10.

si..,else #

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

if TEST-COMMANDthen STATEMENTS1else STATEMENTS2fi

Si le TEST-COMMAND donne True, la balise STATEMENTS1 sera exécuté. Sinon, si TEST-COMMAND renvoie False, le STATEMENTS2 sera exécuté. Vous ne pouvez avoir qu’une seule clauseelse dans l’instruction.,

ajoutons une clauseelse à l’exemple de script précédent:

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

si..elif..else #

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

if TEST-COMMAND1then STATEMENTS1elif TEST-COMMAND2then STATEMENTS2else STATEMENTS3fi

Si le TEST-COMMAND1 donne True, la balise STATEMENTS1 sera exécuté., Si le TEST-COMMAND2 donne True, le STATEMENTS2 sera exécuté. Si aucune des commandes de test pour évaluer True, le STATEMENTS2 est exécutée.

Vous pouvez avoir une ou plusieurs clauseselif dans l’instruction. La clauseelse 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 des instructions if.

nous allons ajouter un elif clause précédente script:

if Imbriquées #

Bash permet d’imbriquer if instructions à l’intérieur de la balise if consolidés. Vous pouvez placer plusieurs instructionsif dans une autre instructionif.,

le script suivant vous demandera d’entrer trois nombres et imprimera le plus grand nombre parmi les trois nombres.

Voici comment la production va ressembler à ça:

Enter the first number: 4Enter the second number: 7Enter the third number: 27 is the largest number.
de manière générale, il est plus efficace d’utiliser la balise case déclaration au lieu imbriquée if consolidés.

Plusieurs Conditions #

logique OR et AND opérateurs vous permettent d’utiliser plusieurs conditions dans le if consolidés.,

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

opérateurs de Test #

dans Bash, la commandetest prend l’une des formes de syntaxe suivantes:

test EXPRESSION]

pour rendre le script portable, préférez utiliser l’ancien test[ commande disponible sur tous les shells POSIX., La nouvelle version améliorée de la commande test [[ (doubles crochets) est prise 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, l’utilisation de la logique NOT (!) de l’opérateur. Lorsque vous comparez des chaînes, Utilisez toujours des guillemets simples ou doubles pour éviter les problèmes de fractionnement et de globulation de mots.,

ci-Dessous sont quelques-uns des plus couramment utilisé des opérateurs:

  • -n VAR – Vrai si la longueur de VAR est plus grand que zéro.
  • -z VAR – Vrai si le 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 – True if INTEGER1 and INTEGER2 are equal.
  • INTEGER1 -gt INTEGER2 – True if INTEGER1 is greater than INTEGER2.
  • INTEGER1 -lt INTEGER2 – True if INTEGER1 is less than INTEGER2.
  • INTEGER1 -ge INTEGER2 – True if INTEGER1 is equal or greater than INTEGER2.
  • INTEGER1 -le INTEGER2 – True if INTEGER1 is equal or less than INTEGER2.,
  • -h FILE – True if the FILE exists and is a symbolic link.
  • -r FILE – True if the FILE exists and is readable.
  • -w FILE – True if the FILE exists and is writable.
  • -x FILE – True if the FILE exists and is executable.,
  • -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 le type (nœud, annuaire, socket, etc.).
  • -f FILE – Vrai si le FILE existe et est un fichier normal (pas un répertoire ou un périphérique).,

Conclusion #

les instructions if, if..elseEt if..elif..else vous permettent de contrôler le flux d’exécution du script Bash en évaluant des conditions données.