Tests conditionnels en bash: si, alors, autre, elif

Contenu

Bash Shell

La programmation en bash peut être amusante parfois. Sachez séparer vos ifs de vos else-ifs ou elif, comme on les appelle en bash, ça peut aussi être amusant. Découvrez comment obtenir vos conditions bash correctement.

Conditions Bash: si, alors, autre, elif

Aussi bon que tous les langages de codage, il y a des conditionnels – des énoncés conditionnels qui permettent de tester un éventail de situations. Dans la plupart des langages de programmation, un basique if La déclaration permettrait de tester l'état ou la valeur d'une variable de programmation donnée. Par exemple, vous pouvez tester si une variable est vide ou non.

Pour plus d'informations sur les variables bash, Vous voudrez peut-être consulter notre article Fonctions Bash et variables locales.

Bash est un shell Linux à part entière et un langage de programmation complet. Il comprend également de nombreuses extensions aux instructions conditionnelles les plus courantes dans son langage de programmation. / script. Par exemple, on peut tester la présence de fichiers, pour voir si un grep -q la déclaration a réussi et ainsi de suite.

En même temps, on peut spécifier des instructions conditionnelles complexes, et même des sous-couches dans le if etc. instruction conditionnelle proprement dite. Cela rend Bash très approprié pour la manipulation / manipulation de données volumineuses, analyse de texte et de nombreuses autres tâches de type DevOps.

Cet article se concentrera principalement sur l'obtention des conditions correctes, à l'aide de if...then, else, et elif déclarations. Un prochain article discutera des conditions de test plus complexes, utilisation de sous-couches dans des instructions conditionnelles, etc.

Test conditionnel Bash: et … ensuite … être

Écrire une instruction conditionnelle dans Bash est simple et direct. Vous pouvez même les écrire directement sur la ligne de commande Bash, sans utiliser de script:

si [ "1" == "1" ]; puis echo 'vrai'; être

Simple si exemple en bash

Le résultat est certain, Quoi 1 allumettes 1. Notez que la façon de tester l'égalité entre les éléments est d'utiliser == et non =. C'est le cas dans de nombreuses langues et, souvent, est fait pour éviter ou se séparer clairement de la « mission » (En d'autres termes, déterminer une variable à une valeur donnée).

Notez également que nous terminons chaque condition if déclaration avec une fin fi (l'inverse de et) déclaration. Cela nous permet de spécifier plusieurs lignes après puis. then clause avant de mettre fin à la section ultérieure.

Test conditionnel Bash: le reste Et variables

Mettons cela dans un petit script, ajoutons un else section et ajouter quelques vérifications variables.

Nous définissons test.sh comme suit:

#!/bin/bash

VAR1=1
VAR2=1

if [ "${VAR1}" == "${VAR2}" ]; then 
  echo 'true'
else 
  echo 'false'
fi

Ensuite, nous rendons ce petit script exécutable en lançant chmod +x test.sh qui définit le drapeau exécutable pour le test.sh texte.

Exemple de if dans un script utilisant des variables et une clause else

À l'intérieur du script que nous avons défini VAR1 et VAR2 à la valeur de 1. Ensuite, nous émettons une instruction if qui compare les deux variables, et nous résonnons true si la comparaison est valide, et false si la comparaison a échoué. Le résultat est correct true production.

Test conditionnel Bash: et Imbrication et vérifications avancées

Nous pouvons développer un peu plus le dernier exemple et vérifier l'inégalité en utilisant != au lieu de ==, ajoutez des boucles imbriquées et utilisez en même temps certaines vérifications de variables avancées natives de Bash.

Nous définissons test2.sh comme suit:

#!/bin/bash

VAR1="${1}"
VAR2="${2}"

si [ ! -Avec "${VAR1}" -une ! -Avec "${VAR2}" ]; then
  if [ "${VAR1}" != "${VAR2}" ]; then 
    echo 'true'
  else 
    echo 'false'
  fi
else
  echo "Affirmer: Soit VAR1 (valeur: '${VAR1}'), ou VAR2 (valeur: '${VAR2}'), ou les deux, sont vides!"
être

Dans ce scénario, on remplace nos valeurs encodées de 1 pour les deux VAR1 et VAR2 avec deux variables spéciales à savoir ${1} et ${2}, qui représentent le premier et le deuxième choix / paramètre, passé de la ligne de commande au script. Nous rendons notre script exécutable à nouveau et l'exécutons avec diverses combinaisons de mauvaises alternatives.

Une instruction if plus complexe qui teste également les variables de script

Les -z le code signifie vérifier si un paramètre est vide ou non. Nous nions le résultat (En d'autres termes, oui se transforme en non et il ne se transforme pas en oui, ou plutôt / mieux, vrai devient faux et faux devient vrai) par l'utilisation d'un point d'exclamation (!) en face de -z Chèque. Plus tard, nous utilisons également un ET clause (En d'autres termes, les deux côtés de la ET la clause doit être prouvée).

En d'autres termes, la façon dont vous pourriez lire le if [ ! -z "${VAR1}" -a ! -z "${VAR2}" ]; la ligne en langage naturel est VAR1 et VAR2 ne doivent pas être vides. Nous pouvons voir que nos variables sont vérifiées correctement par cette instruction conditionnelle, car à chaque fois on essaie de ne passer qu'une variable, ou deux variables dont une est vide, le programme saute au else clause informant de l'utilisation incorrecte de notre option de script.

En conclusion, à l'intérieur du premier if instruction conditionnelle, nous avons un lycée (jargon informatique: imbriqué) phrase conditionnelle. Cette déclaration vérifie notre inégalité en utilisant ce n'est pas pareil (!=). effectivement, quand on passe deux valeurs différentes, a savoir 1 et 2 pour le scénario, le résultat est vrai: ces nombres sont inégaux.

Test conditionnel Bash: elif

Lorsque vous commencez à développer des instructions plus complexes et profondément imbriquées dans Bash, vous découvrirez bientôt qu'il y a un cas où vous vous branchez de plus en plus profondément dans le code imbriqué, et le code commence à paraître plus complexe en raison de plusieurs couches de profondeur. Souvent, même si pas toujours, vous pouvez utiliser un elif déclaration dans de tels cas. Par exemple:

#!/bin/bash

if [ "${1}" -ll 2 ]; then
  echo "moins que 2"
else
  if [ "${1}" -ll 4 ]; then
    echo "moins que 4"
  else
    if [ "${1}" -ll 6 ]; then
      echo "moins que 6"
    fi
  fi
fi

if [ "${1}" -ll 2 ]; then
  echo "moins que 2"
elif [ "${1}" -ll 4 ]; then
  echo "moins que 4"
elif [ "${1}" -ll 6 ]; then
  echo "moins que 6"
être

Après avoir défini ce script comme test3.sh, rendez-le exécutable et lancez-le.

Exemple d'instruction elif conditionnelle avec deux implémentations différentes

Les deux blocs de code font exactement la même chose: ils vérifient si la valeur passée comme première option au script (1, 3 et 5 respectivement) est inférieur à (-lt) Les valeurs 2, 4 et 6 en séquence. On voit que les deux blocs fonctionnent exactement de la même manière.

Malgré cela, le deuxième bloc de code, qui emploie l'utilisation de elif déclarations (qui peut aussi être lu comme mais déclarations) au lieu de plus … et blocs d'instructions conditionnelles. Le deuxième bloc de code n'est pas seulement plus court, c'est aussi plus propre, plus clair et plus agréable à l'oeil. Notez que vous pouvez également combiner else et elif déclarations combinées, manière imbriquée, etc.

conclusion

L'écriture du code bash est, était et sera probablement pendant un certain temps un exercice agréable pour beaucoup. La création d'instructions conditionnelles bien conçues en fait partie intégrante et courante.. Dans ce petit tutoriel, nous analysons if, then, else, elif et fi déclarations. Utilisation des différentes instructions conditionnelles, vous serez en mesure de créer un code excellent et propre. Prendre plaisir!

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.