50 % de réduction sur tous les plans, durée limitée. À partir de $2.48/mo
10 min restantes
Serveurs et OS

L'instruction If en Bash : syntaxe, variantes, cas d'usage, commandes et bien plus !

Pius Bodenmann By Pius Bodenmann 10 min de lecture Mis à jour le 28 jan. 2024
scripting bash

En scripting shell, les instructions if en Bash jouent un rôle essentiel en permettant aux développeurs de créer des chemins d'exécution conditionnels selon les situations. Concrètement, les instructions if permettent de prendre des décisions dans les scripts Bash, en tenant compte de facteurs tels que les résultats de tests, les entrées utilisateur ou les états du système. C'est une façon de naviguer entre différentes possibilités.

En Bash, une instruction if suit une structure précise. Elle commence généralement par le mot-clé "if" suivi de la condition à évaluer, du mot-clé "alors", puis d'une ou plusieurs commandes à exécuter si la condition est vraie.

Pour plus de flexibilité, l'instruction if peut également inclure un "elif» (autrement si) entre en jeu lorsque la condition initiale est fausse. Elle permet de tester une condition supplémentaire et d'agir en conséquence. De plus, l'instruction if peut comporter une clause « else » facultative, qui s'exécute si aucune des conditions n'est vérifiée.

En combinant les instructions if avec d'autres commandes Bash et les fonctionnalités du scripting shell, les développeurs peuvent créer des scripts avancés capables d'automatiser des tâches et des processus complexes. Continuez la lecture pour en savoir plus sur l'instruction if en Bash : sa syntaxe, ses cas d'usage et des exemples concrets !

Syntaxe de l'instruction If en Bash

La syntaxe Bash désigne les règles qui régissent la structure et la grammaire des commandes et des scripts écrits dans le langage shell Bash. Elle comprend plusieurs constructions et éléments, notamment :

  • Commandes: Ce sont les programmes exécutables ou les commandes intégrées du shell utilisés pour effectuer des tâches spécifiques. Vous passerez la majeure partie de votre temps en programmation Bash à travailler avec ces lignes.
  • Paramètres: Ce sont les valeurs transmises aux commandes pour préciser des options, des paramètres ou des données d'entrée. Considérez-les comme des conditions définies pour une commande afin d'en spécifier les paramètres d'exécution.
  • Variables: Ce sont des symboles qui représentent des valeurs pouvant être assignées, manipulées ou utilisées dans des expressions. Elles servent couramment à déterminer les valeurs que les commandes et les arguments doivent traiter.
  • Redirections: C'est le mécanisme permettant de rediriger l'entrée, la sortie ou les erreurs vers des fichiers, des périphériques ou d'autres commandes. Sans elles, vos commandes risquent de cibler la mauvaise destination et de corrompre votre code.
  • Tuyaux: C'est un mécanisme qui connecte la sortie d'une commande à l'entrée d'une autre. On les utilise généralement pour construire des lignes de commande conditionnelles complexes dans de grands programmes et pour enchaîner des commandes entre elles.
  • Structures de contrôle: Ce sont des constructions qui régissent le flux d'exécution des commandes, comme les boucles, les conditions et les fonctions. Bien maîtriser les structures de contrôle est essentiel pour écrire des lignes de commande élaborées et apporte une profondeur supplémentaire à votre code.
  • Commentaires: Ce sont des annotations ignorées par le shell, utilisées pour documenter le code ou fournir des explications. Ils constituent des repères précieux lors de l'analyse et du débogage, en particulier dans le cadre de projets en équipe.

La syntaxe Bash doit être correctement rédigée pour que le shell puisse interpréter et exécuter les commandes. Les erreurs de syntaxe peuvent provoquer des messages d'erreur ou un comportement inattendu.

Voici l'instruction if Bash en action :

if condition
then
   command1
   command2
   ...
   commandN
elif condition2
then
   commandA
   commandB
   ...
   commandC
else
   commandX
   commandY
   ...
   commandZ
fi

Dans notre exemple, la « condition » désigne un test qui produit un résultat vrai ou faux. Lorsque la condition est vraie, les commandes spécifiées après le mot-clé « then » sont exécutées. Si l'on souhaite évaluer une condition supplémentaire, on utilise le mot-clé « elif », qui permet d'envisager une autre possibilité. Si aucune des conditions n'est vérifiée, les commandes spécifiées après le mot-clé « else » prennent le relais : c'est en quelque sorte un plan de secours. Enfin, pour marquer la fin de l'instruction if, on utilise le mot-clé « fi ».

Comment fonctionnent les instructions Bash ?

En scripting Bash, l'instruction if est particulièrement utile pour orienter le déroulement d'un script en fonction du résultat d'un test conditionnel. Son rôle consiste à évaluer une condition et, si elle est vérifiée, à exécuter un ensemble précis de commandes.

Voici comment fonctionne concrètement un if dans un script Bash. Le script évalue la condition définie dans le if. Si elle est vraie, les commandes du bloc « then » s'exécutent.

Si la condition est fausse, le script passe à l'évaluation des conditions elif suivantes. Si l'une d'elles est vraie, les commandes du bloc elif correspondant s'exécutent. Si aucune des conditions du if ni des elif n'est vraie, le script exécute les commandes du bloc else, à condition qu'un bloc else soit présent.

En résumé, le if permet de contrôler le flux d'exécution d'un script : selon le résultat d'un test, le script emprunte un chemin différent. Ce test peut s'appuyer sur différents éléments, comme le code de retour d'une commande ou la valeur d'une variable.

Le if en Bash : exemples concrets

Passons de la théorie à la pratique et voyons comment utiliser un if dans un vrai contexte de développement. Voici un exemple qui illustre son fonctionnement :

#!/bin/bash
# set a variable
x=5
# evaluate the variable
if [ $x -gt 4 ]
then
  echo "x is greater than 4."
else
  echo "x is less than or equal to 4."
fi

Dans cet exemple, le if évalue la valeur de la variable x. Si x est supérieur à 4, le script affiche « x is greater than 4 ». Si x est inférieur ou égal à 4, il affiche « x is less than or equal to 4 ».

Maintenant que vous maîtrisez la forme de base du if en Bash, allons plus loin. Nous allons parcourir les variantes une par une : if simple, if imbriqué, if else, if elif else et case.

Le if simple

Commençons par la forme la plus simple. Le if en Bash vérifie une condition et, si elle est vraie, exécute le bloc de commandes correspondant. Voici la syntaxe :

if [ condition ]
then
  commands
fi

Dans ce cas, le script évalue la condition. Si elle est vraie, les commandes spécifiées s'exécutent. Si elle est fausse, le script passe à la commande suivante sans exécuter le bloc « then ».

Les if imbriqués

Un if imbriqué est simplement un if placé à l'intérieur d'un autre if. Cette structure permet d'effectuer des tests plus complexes au sein d'un script. Voici un exemple :

if [ condition1 ]
then
  if [ condition2 ]
  then
    commands
  fi
fi

On peut voir dans les commandes que le script évalue d'abord condition1. Si condition1 est vraie, il évalue ensuite condition2. Si condition2 est également vraie, le script exécute les commandes correspondantes.

Le if else

Le if else permet à votre script de prendre des décisions selon qu'une condition est vraie ou fausse, offrant ainsi un contrôle plus fin sur l'exécution du code. Voici la structure :

if [ condition ]
then
  commands1
else
  commands2
fi

Ce bloc garantit que si la condition est vraie, le script exécute « commands1 ». Dans le cas contraire, il bascule sur « commands2 ».

Le if elif else

Lorsqu'il faut gérer plusieurs conditions et leurs résultats respectifs, le if elif else est la bonne solution. Observez la syntaxe suivante :

if [ condition1 ]
then
  commands1
elif [ condition2 ]
then
  commands2
else
  commands3
fi

Ici, le script évalue d'abord condition1. Si elle est vraie, il exécute commands1. Si condition1 est fausse, il passe à condition2. Si condition2 est vraie, il exécute commands2. Si les deux conditions sont fausses, le script exécute commands3 en guise d'alternative.

Le case

En Bash, le case joue un rôle similaire au switch que l'on trouve dans d'autres langages. Il permet d'exécuter différents blocs de commandes selon la valeur d'une variable. Voici la structure :

case expression in
  pattern1)
    commands1;;
  pattern2)
    commands2;;
  pattern3)
    commands3;;
*)
default commands;;
esac

Ici, le script évalue la variable expression et la compare à différents motifs. Lorsqu'une correspondance est trouvée, le bloc de commandes associé s'exécute. Si aucun motif ne correspond, les commandes par défaut prennent le relais. Le motif astérisque (*) sert de joker et capture tout ce qui n'a pas été couvert.

Les opérateurs logiques en Bash

Les opérateurs logiques sont un autre élément central du if en Bash. Ils permettent de combiner plusieurs conditions et de prendre des décisions selon le résultat de leur évaluation combinée. Bash propose trois opérateurs logiques principaux utilisables dans les if. Voici des exemples pour chacun d'eux.

  • Bash ET (&&):
if [ $age -ge 18 ] && [ "$citizen" == "yes" ]; then
  echo "You meet the criteria for voting."
fi
  • Ou logique (||):
if [ "$status" == "active" ] || [ "$role" == "admin" ]; then
  echo "Access granted."
fi
  • Différent de:
if(( ! $a == "true" )) then 
  echo "a" was initially false. 
else
  echo "a" was initially true. 
fi

Conclusion

Dans cet article, nous avons présenté une introduction aux instructions if en Bash et à leur utilisation. Nous avons également vu comment elles permettent de rendre votre code plus lisible et plus fonctionnel. En utilisant ces instructions conditionnelles de façon efficace, vous pouvez créer des scripts capables de gérer des tâches complexes et de prendre des décisions.

Vous débutez dans l'univers de Linux ? Laissez-nous vous guider dans cette aventure ! Notre Linux VPS est le point de départ idéal pour les débutants : simple à prendre en main, sans compromis sur les fonctionnalités. Grâce à des interfaces intuitives et un support expert, exploiter les capacités d'un serveur Linux n'a jamais été aussi accessible. Que vous montiez un site web, testiez des applications ou exploriez l'univers Linux, notre Linux VPS vous offre un environnement sécurisé et sans prise de tête. Faites vos premiers pas dans l'univers Linux en toute confiance : découvrez nos options Linux VPS dès aujourd'hui et lancez-vous dans votre aventure Linux !

Hébergement Linux VPS

Obtenez un Linux VPS économique ou premium pour héberger votre site web ou votre bureau à distance, au meilleur prix du marché. VPS fonctionne sur Linux KVM pour une meilleure efficacité, sur du matériel performant avec stockage NVMe SSD pour des vitesses accrues.

Lire la suite

Questions fréquemment posées

Peut-on utiliser des opérateurs logiques dans les instructions if en Bash ?

Oui, vous pouvez utiliser des opérateurs logiques tels que '&' et '||' dans les instructions if en Bash. Par exemple, if [ $var -gt 0 ] && [ $var -lt 10 ]; then … exécutera le bloc de code si $var est supérieur à 0 et inférieur à 10.

Peut-on utiliser plusieurs conditions dans une seule instruction if ?

Oui, vous pouvez combiner plusieurs conditions dans une seule instruction if en Bash en utilisant des opérateurs logiques tels que -a (ET) ou -o (OU) pour les combiner. Par exemple, if [ $var -gt 0 -a $var -lt 10 ]; then … exécutera le bloc de code si $var est supérieur à 0 ET inférieur à 10.

Peut-on utiliser la substitution de commandes dans les instructions if en Bash ?

Oui, vous pouvez utiliser la substitution de commande dans les instructions if Bash en encadrant la commande avec $() ou des backticks (). Par exemple, if [ $(whoami) == "root" ]; then … exécutera le bloc de code si l'utilisateur actuel est root.

[[ vs [ vs ( vs (( : Quelle est la différence entre ces opérateurs Bash ?

En résumé : [[ sert aux tests conditionnels avancés. [ sert aux tests conditionnels de base. ( sert au regroupement en sous-shell et à l'exécution de commandes. (( sert aux opérations arithmétiques.

 

Partager

À lire sur le blog

Continuez la lecture.

Image de couverture des meilleures applications auto-hébergées compatibles avec Cosmos Cloud, avec des panneaux d'applications autour d'un tableau de bord Cosmos.
Serveurs et OS

Les meilleures applications auto-hébergées compatibles avec Cosmos Cloud : fichiers, médias, mots de passe, automatisation et plus encore !

Maybe vous avez installé Cosmos Cloud et cherchez maintenant des applications qui s'y intègrent bien, ou peut-être que vous n'avez pas encore adopté Cosmos et que vous voulez juste voir si ça correspond à votre flux de trava

Nick ArgentNick Argent 16 min de lecture
Illustration de couverture pour Portainer vs Cosmos Cloud pour la gestion d'applications Docker, avec un schéma de configuration hybride et des blocs ops/accès en néon.
Serveurs et OS

Portainer vs Cosmos Cloud : quelle solution pour gérer vos applications Docker ?

Si vous connaissez déjà Docker et cherchez simplement la meilleure façon de gérer une pile applicative en croissance, voici la réponse directe à la question Portainer vs Cosmos Cloud. Portainer est le choix le plus solide pour une gest

Nick ArgentNick Argent 14 min de lecture
Illustration principale pour Cosmos Cloud vs CasaOS vs Umbrel, montrant trois approches auto-hébergées au sein d'un réseau cloud abstrait.
Serveurs et OS

Cosmos Cloud vs CasaOS vs Umbrel : quelle plateforme auto-hébergée correspond à votre configuration ?

En bref : CasaOS reste le point de départ le plus accessible, Umbrel offre l'expérience la plus soignée et la mieux organisée, et Cosmos Cloud devient le meilleur choix dès que vous souhaitez un contrôle plus fin sur les dom

Nick ArgentNick Argent 11 min de lecture

Prêt à déployer ? À partir de 2,48 $/mois.

Cloud indépendant, depuis 2008. AMD EPYC, NVMe, 40 Gbps. Remboursement sous 14 jours.