Agence web » Actualités du digital » si, alors, sinon, elif –

si, alors, sinon, elif –

une-breve-histoire-d39unix-cloudsavvy-it-7337062

La programmation dans Bash peut parfois être amusante. Savoir comment séparer vos if de vos else-if ou elif comme on les appelle dans Bash, peut aussi être amusant. Découvrez comment optimiser vos conditions Bash.

Conditions de Bash: si, alors, sinon, elif

Dans aussi bien que tous les langages de codage, il existe des conditions – des instructions conditionnelles qui permettent de tester une variété de situations. Dans la plupart des langages de programmation, un if Cette instruction permettrait de tester l’état ou la valeur d’une variable de programmation donnée. Par exemple, on pourrait tester si une variable est vide ou non.

Pour en savoir plus sur les variables Bash, vous pouvez consulter notre article sur les fonctions Bash et les variables locales.

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

De plus, on peut spécifier des instructions conditionnelles complexes, et même des sous-interpréteurs directement dans le if etc. déclaration conditionnelle elle-même. Cela rend Bash très approprié pour la gestion / manipulation de Big Data, l’analyse de texte et de nombreuses autres tâches de type DevOps.

Cet article se concentrera principalement sur l’obtention des bonnes conditions, en utilisant if...then, else, et elif déclarations. Un prochain article se penchera sur des conditions de test plus complexes, en utilisant des sous-shell dans des instructions conditionnelles, etc.

Test conditionnel Bash: si … alors … fi

L’écriture d’une instruction conditionnelle dans Bash est facile et directe. Vous pouvez même les écrire directement sur la ligne de commande Bash, sans utiliser de script:

if [ "1" == "1" ]; then echo 'true'; fi

Exemple simple si dans Bash

Le résultat est vrai, comme 1 allumettes 1. Notez que la façon de tester l’égalité entre les éléments est d’utiliser == et pas =. C’est le cas dans de nombreuses langues et est souvent fait pour éviter, ou clairement séparer de, «l’assignation» (c’est-à-dire fixer une variable à une valeur donnée).

Notez également que nous terminons chaque conditionnel if instruction avec une terminaison fi (l’inverse de si) déclaration. Cela nous permet de spécifier plusieurs lignes après then clause avant de mettre fin à la puis section.

Test conditionnel Bash: autre Et variables

Mettons maintenant ceci dans un petit script, ajoutons un else section, et ajoutez quelques vérifications de 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 émettant chmod +x test.sh qui définit l’indicateur exécutable pour le test.sh scénario.

In-script if exemple utilisant des variables et une clause else

À l’intérieur du script que nous définissons VAR1 et VAR2 à la valeur de 1. Nous émettons ensuite une instruction if qui compare les deux variables, et fait écho true si la comparaison est valide, et false si la comparaison a échoué. Le résultat est un correct true production.

Test conditionnel Bash: si 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 des vérifications de variables avancées natives Bash en même temps.

Nous définissons test2.sh comme suit:

#!/bin/bash

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

if [ ! -z "${VAR1}" -a ! -z "${VAR2}" ]; then
  if [ "${VAR1}" != "${VAR2}" ]; then 
    echo 'true'
  else 
    echo 'false'
  fi
else
  echo "Assert: Either VAR1 (value: '${VAR1}'), or VAR2 (value: '${VAR2}'), or both, are empty!"
fi

Dans ce script, nous avons remplacé nos valeurs codées en dur de 1 pour les deux VAR1 et VAR2 avec deux variables spéciales à savoir ${1} et ${2}, qui représentent la première et la deuxième option / paramètre, passé de la ligne de commande au script. Nous rendons notre script exécutable à nouveau et l’exécutons avec diverses combinaisons d’options erronées.

Une instruction d'inégalité si plus complexe qui teste également les variables de script

le -z code signifie vérifier si un paramètre est vide ou non. Nous nions le résultat (c’est-à-dire que oui devient non et non devient oui, ou plutôt / mieux vrai devient faux et faux devient vrai) en utilisant un point d’exclamation (!) en face de la -z vérifier. Nous utilisons ensuite également un ET clause (c.-à-d. les deux côtés de la ET clause doit prouver vrai).

En d’autres termes, la façon dont vous pouviez lire le if [ ! -z "${VAR1}" -a ! -z "${VAR2}" ]; 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 que nous essayons de ne transmettre qu’une seule variable, ou deux variables où l’une est vide, le programme passe else clause qui rapporte notre utilisation incorrecte des options de script.

Enfin, à l’intérieur du premier if instruction conditionnelle, nous avons un secondaire (jargon informatique: imbriqué) instruction conditionnelle. Cette déclaration vérifie notre inégalité en utilisant inégal (!=). Effectivement, lorsque nous passons deux valeurs différentes à savoir 1 et 2 au script, la sortie est vraie: 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 constaterez bientôt qu’il y a un cas dans lequel vous vous branchez de plus en plus profondément dans le code imbriqué, et le code commence à paraître plus complexe en raison des multiples couches de profondeur. Souvent, mais pas toujours, on peut utiliser un elif déclaration dans de tels cas. Par exemple:

#!/bin/bash

if [ "${1}" -lt 2 ]; then
  echo "less then 2"
else
  if [ "${1}" -lt 4 ]; then
    echo "less then 4"
  else
    if [ "${1}" -lt 6 ]; then
      echo "less then 6"
    fi
  fi
fi

if [ "${1}" -lt 2 ]; then
  echo "less then 2"
elif [ "${1}" -lt 4 ]; then
  echo "less then 4"
elif [ "${1}" -lt 6 ]; then
  echo "less then 6"
fi

Après avoir défini ce script comme test3.sh, nous le rendons exécutable et l’exécutons.

exemple d'instruction conditionnelle elif 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 en 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.

Cependant, le deuxième bloc de code, qui utilise l’utilisation de elif instructions (qui peuvent également être lues comme sinon si instructions) au lieu de autre..si blocs d’instructions conditionnelles. Le deuxième bloc de code n’est pas seulement plus court, il est également plus propre, plus clair et plus facile à regarder. Notez que vous pouvez également combiner else et elif instructions en combinaison, de manière imbriquée, etc.

Conclusion

L’écriture de code Bash est, était et restera 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 court tutoriel, nous avons examiné if, then, else, elif et fi déclarations. En utilisant les diverses instructions conditionnelles, vous serez en mesure de créer un code génial et propre. Prendre plaisir!

★★★★★