Écrire un script Bourne Again Shell (Bash) peut être une expérience gratifiante, surtout lorsque vous y ajoutez de la logique pour garantir sa robustesse. Une façon d’incorporer cette logique et de rendre votre script plus intelligent est d’utiliser des instructions conditionnelles, plus précisément le « bash if else ».
Dans cette plongée en profondeur, vous allez découvrir la puissance et les subtilités des instructions « if-else » et « case » de Bash. Cela vous aidera à créer des scripts Bash intelligents et sans erreur. Nous vous donnerons également quelques bonnes pratiques pour vous assurer que vous écrivez des scripts comme un professionnel.
Excité ? Plongez-vous dans le sujet et perfectionnez vos compétences en script Bash !
Préparation de l’environnement : Prérequis
Pour profiter au maximum de ce tutoriel, vous devez avoir quelques éléments essentiels en place :
- A Linux or Windows system armed with Bash. For those on Windows, the Windows Subsystem for Linux (WSL) is your best bet.
- A code/text editor to write and refine your ‘bash if else’ scripts.
Pourquoi devez-vous utiliser les instructions « bash if else » ?
Pourquoi les instructions conditionnelles sont-elles si appréciées dans les scripts Bash ? Tout simplement parce qu’elles dotent vos scripts de capacités de prise de décision basées sur des conditions prédéfinies.
Par exemple, vous pouvez utiliser le « bash if else » pour vérifier si un fichier existe avant de tenter de le supprimer. Alternativement, vous pouvez vérifier si un utilisateur dispose des permissions requises avant de lui permettre d’accéder à une ressource.
Infuser des scripts avec des structures ‘bash if else’ non seulement amplifie leur flexibilité mais aussi leur puissance. Envisagez un script conçu pour purger tous les fichiers dans un dossier. En utilisant ‘bash if else’, vous pouvez supprimer chirurgicalement uniquement les fichiers âgés de plus de 30 jours, en préservant le reste.
Plongée dans l’instruction ‘bash if else’
Maintenant, laissons l’introduction derrière nous et mettons les mains dans le cambouis. Nous commencerons par l’une des instructions conditionnelles les plus universellement adoptées: l’instruction ‘bash if else’.
Au cœur de l’instruction ‘bash if else’, il y a une passerelle pour insérer des conditions dans vos scripts Bash. Observez sa syntaxe élégante ci-dessous:
- Elle commence par le mot-clé if, suivi des conditions encapsulées dans [[ ]]. Ensuite, le code résidant à l’intérieur de l’instruction ‘bash if else’ est exécuté, se concluant par le mot-clé fi.
- Le mot-clé then sépare la condition des actions (ou des instructions) qui s’exécutent lorsque les conditions sont satisfaites. Ce bloc d’action peut s’étendre sur plusieurs lignes, séparées par des points-virgules (;).
Imaginez la création d’un système de connexion. Il demande le nom d’utilisateur correct avant d’accorder l’accès:
1. Lancez votre terminal et créez un nouveau fichier bash_if_demo.sh en utilisant votre éditeur de texte préféré. Il s’agira de notre terrain de jeu pour comprendre les instructions ‘bash if else’.
2. Intégrez l’exemple de « bash if else » fourni ci-dessous dans votre fichier bash_if_demo.sh. Une fois inséré, enregistrez les modifications et quittez l’éditeur.
Le script d’exemple « bash if else » demande un nom d’utilisateur. Si le nom d’utilisateur attendu est saisi, un message de bienvenue est affiché, complété par la date et l’heure actuelles.
Maintenir un enregistrement de la date et de l’heure des tentatives d’accès des utilisateurs peut être précieux pour les analyses futures.
La ligne d’introduction #!/bin/bash (communément appelée shebang) indique au système l’interpréteur à utiliser pour traiter le code suivant dans le script. Ici, « bash » est notre interpréteur choisi.
3. Maintenant, mettons notre script ‘bash if else’ à l’épreuve. Exécutez la commande suivante :
Rappelez-vous, quelle que soit la variante de l’interpréteur de commandes Bash que vous utilisez, préfixez le nom de votre script par ‘bash’. Cela garantit que le système utilise Bash pour l’exécution du script.
Entrez « ATA » et appuyez sur Entrée. Le résultat devrait ressembler à ce qui suit :

Si vous entrez autre chose que « ATA », le message de bienvenue sera absent de la sortie. Seule la date et l’heure actuelles seront affichées. Ce comportement est dû à l’instruction ‘bash if else’ qui vérifie une correspondance exacte avec la valeur de la variable $NAME.
Notez que les instructions ‘bash if else’ sont sensibles à la casse. Ainsi, « ata », « aTa », « Ata », etc., sont différents de « ATA ».

Testez systématiquement vos scripts ‘bash if else’ avec différentes entrées. Cela garantit que les scripts fonctionnent comme prévu.
Approfondissement : Instructions ‘bash if else’ imbriquées
Vous avez déjà compris les bases de la création des instructions ‘bash if else’. Bien que ces connaissances fondamentales suffisent pour des tâches simples, les scripts complexes demandent souvent des constructions avancées. C’est là que les instructions ‘bash if else’ imbriquées entrent en jeu. Essentiellement, il s’agit d’une instruction ‘if’ contenant une ou plusieurs instructions ‘if’ supplémentaires.
La structure ci-dessous illustre la syntaxe de base des instructions ‘bash if else’ imbriquées. Ici, la clause externe if [[ conditions ]]
englobe le code exécutable uniquement en cas de réalisation de la condition. Dans notre contexte, le code imbriqué est une autre instruction ‘if’.
if [[ conditions ]]
– Ceci représente l’instruction externe ‘bash if else’. Le code imbriqué (une autre instruction ‘if’) est exécuté uniquement si la condition spécifiée est vraie.if [[ condition2 ]]
– Ceci représente la clause interne ‘bash if else’. Il contient le code qui est exécuté si et seulement si les deux conditions sont satisfaites.
Allons plus loin. En améliorant notre exemple précédent de ‘bash if else’, nous inclurons maintenant une instruction if
qui demande un mot de passe :
1. Tout d’abord, créez un nouveau fichier intitulé bash_nested_if_demo.sh à l’aide de votre éditeur de texte préféré.
2. Transférez le code ‘bash if else’ fourni ci-dessous dans le fichier bash_nested_if_demo.sh, enregistrez vos modifications et fermez l’éditeur.
Ce code ‘bash if else’ demande à la fois un nom et un mot de passe. Si les conditions pour le nom et le mot de passe sont respectées, un message spécifique est affiché. S’il n’y a pas de correspondance, la sortie affiche uniquement la date et l’heure actuelles.
3. Maintenant, voyons ce script ‘bash if else’ en action. Exécutez la commande ci-dessous :
Pour des résultats optimaux, entrez ATA comme nom d’utilisateur et pwd123 comme mot de passe.

Si vos entrées diffèrent de « ATA » ou « pwd123 », le seul retour que vous recevrez concerne la date et l’heure actuelles. Cela est dû à la structure ‘bash if else’ qui nécessite de remplir les deux conditions.

Décodage des instructions ‘Bash If Else’
Les instructions ‘bash if else’ sont des éléments essentiels dans le scripting Bash, offrant des capacités décisives à vos scripts. Cependant, il est essentiel de comprendre que l’utilisation des instructions ‘if’ n’est pas sans inconvénients.
Le défi évident est que trop de dépendance à « if » peut encombrer votre code, le rendant fastidieux et difficile, surtout lorsque plusieurs déclarations « if » imbriquées entrent en jeu. De tels scripts risquent de devenir du « code spaghetti », caractérisé par une lisibilité réduite et une complexité accrue.
Alors, comment simplifier votre script « bash if else » pour qu’il reste compréhensible ? Optez pour des déclarations « if else » plutôt que pour une multitude de déclarations « if » imbriquées. Le mot-clé « else » offre la possibilité de spécifier un bloc de code à exécuter si la condition « if » n’est pas remplie.
Pour avoir une perspective plus claire, voici la syntaxe de « Bash If Else » ci-dessous, où :
if [[ conditions ]]
– Ici, la déclaration « bash if else » inclut le code (déclaration1
) qui est déclenché uniquement lorsque la condition spécifiée est valide.else
– Cela fait partie de la structure « bash if else ». La déclarationelse
englobe le code (déclaration2
) qui est exécuté lorsque la condition dans la clauseif
précédente n’est pas satisfaite.
Imaginez créer un simple jeu « bash if else » où le système attend un nombre aléatoire de l’utilisateur :
1. Commencez par créer un nouveau fichier nommé bash_if_else_demo.sh.
2. Intégrez le code « bash if else » suivant dans votre fichier bash_if_else_demo.sh, enregistrez les modifications, puis quittez.
Le code « bash if else » sous-jacent demande à l’utilisateur son numéro chanceux. Si l’entrée est paire, il affiche le message « Vous avez gagné ! ». En revanche, un nombre impair déclenche la sortie « Vous avez perdu ! ».
3. Pour observer le script ‘bash if else’ en action, exécutez la commande ci-dessous:
En entrant un chiffre pair, vous devriez voir le message « Vous avez gagné avec ‘bash if else’! ». En revanche, si vous entrez un chiffre impair, vous devriez obtenir le retour « Vous avez perdu en utilisant ‘bash if else’! ».

Pour enrichir le script ‘bash if else’, envisagez d’incorporer un segment qui détermine si l’utilisateur entre une lettre ou un caractère distinct plutôt qu’un nombre.
Décodage des instructions ‘Bash If Else’ et ‘Case’
À ce stade, vous avez exploré quelques méthodes pour prendre des décisions dans vos scripts Bash, notamment les instructions ‘bash if else’. Mais Bash offre une autre possibilité de prise de décision : l’instruction case
.
Tout comme le ‘bash if else’, l’instruction case
est capable de spécifier des séquences de code à exécuter en fonction de conditions spécifiées. Un avantage notable de l’instruction case
est sa concision et sa clarté, surtout lorsqu’elle est comparée à des scénarios ‘bash if else’ imbriqués.
Pour bien comprendre l’alternative ‘bash if else’, plongeons dans la syntaxe de l’instruction ‘case’ :
case $VAR in
– Ce segment de la structure ‘case’ évalue la variable$VAR
par rapport aux motifs définis jusqu’à ce qu’une correspondance soit trouvée.pattern1)
etpattern2)
– Ce sont les critères à tester, et une fois qu’une correspondance est détectée, le code correspondant (statement1
oustatement2
) entre en action.esac
– Conclut la structure ‘case’.
Imaginez que vous conceviez un script ‘bash if else’ où les utilisateurs saisissent le nom de leur pays, et en réponse, le script affiche la langue prédominante de ce pays.
1. Commencez par générer un fichier nommé bash_case_demo.sh.
2. Intégrez le code ‘bash if else’ fourni ci-dessous dans votre fichier bash_case_demo.sh, puis enregistrez et quittez.
Le script ‘bash if else’ qui suit demandera à l’utilisateur le nom de son pays et, en fonction des motifs ‘case’, imprimera la langue principale parlée dans le pays mentionné.
3. Pour expérimenter ce script ‘bash if else’ de première main, utilisez la commande suivante :
Vous verrez que le script met en évidence avec précision la langue en fonction du pays choisi par l’utilisateur.
Si le pays fourni ne correspond pas aux motifs spécifiés, le motif par défaut (*) est activé, ce qui donne la sortie « inconnu ».

Conclusion des instructions conditionnelles Bash
Dans ce guide, vous avez entrepris le voyage pour comprendre les instructions ‘bash if else’ et autres instructions conditionnelles en Bash. De l’instruction simple ‘if’ aux instructions plus complexes ‘if-else’ et ‘case’, vous êtes maintenant équipé des outils essentiels pour écrire des scripts Bash efficaces.
Avec ces bases fondamentales des ‘bash if else’ à votre disposition, vous pouvez construire des scripts Bash plus efficacement, réduisant ainsi les marges d’erreurs.
Mais n’oubliez pas que cela n’est que la partie émergée de l’iceberg. Bash offre une vaste gamme d’instructions conditionnelles. Peut-être devriez-vous plonger dans l’instruction elif de Bash et les opérateurs &&, OR et || pour des connaissances plus approfondies. Avec dévouement, vous pourrez bientôt maîtriser le script Bash !