Dans cette leçon, nous verrons comment utiliser les instructions If-Then-Else dans les scripts d'environnement Bash que nous écrivons. Les instructions If-Then-Else sont un outil utile pour fournir un moyen de définir le chemin d'action d'un script lorsque certaines conditions sont remplies. Voyons quelle est la syntaxe des instructions If-Then-Else :
siQUELQUES-COMMANDES;alorsALORS-COMMANDES ;
autreAUTRES-COMMANDES ;
être
Dans la commande ci-dessus illustrée, si SOME-COMMANDS est vrai ou si son état de retour est 0, THEN-COMMANDS sera exécuté. Si ce n'est pas le cas, ELSE-COMMANDS est exécuté. Dans SOME-COMMANDS, nous effectuons généralement une comparaison de chaînes ou de valeurs sous forme d'entiers. Nous pouvons également faire beaucoup d'opérations qui impliquent des fichiers. Examinons quelques exemples de commandes primaires qui sont principalement utilisées lorsque vous travaillez avec des conditions basées sur des fichiers :
Primaire | Sens |
---|---|
[ -à ] | Renvoie vrai lorsque FILE existe. |
[-b] | Renvoie vrai lorsque FILE existe et est un fichier spécial de bloc. |
[-c] | Renvoie vrai lorsque FILE existe et est un fichier spécial de caractères. |
[ -ré ] | Renvoie vrai lorsque FILE existe et est un répertoire. |
[ -Et ] | Renvoie vrai lorsque FILE existe. |
[ -F ] | Renvoie vrai lorsque FILE existe et est un fichier normal. |
[ -g ] | Renvoie vrai lorsque FILE existe et que son bit SGID est défini. |
[ -h ] | Renvoie vrai lorsque FILE existe et est un lien symbolique. |
[-k] | Renvoie vrai lorsque FILE existe et que son bit persistant est défini. |
[ -p ] | Renvoie vrai lorsque FILE existe et est un tube nommé (FIFO). |
[ -r ] | Renvoie vrai lorsque FILE existe et est lisible. |
[ -s ] | Renvoie vrai lorsque FILE existe et a une taille supérieure à zéro. |
[ -t ] | Renvoie vrai lorsque le descripteur de fichier FD est ouvert et fait référence à un terminal. |
[-u] | Renvoie vrai lorsque FILE existe et que son bit SUID (définir l'ID utilisateur) est défini. |
[ -dans ] | Renvoie vrai lorsque FILE existe et est accessible en écriture. |
[-X] | Renvoie vrai lorsque FILE existe et est exécutable. |
[-O] | Renvoie vrai lorsque FILE existe et appartient à l'ID utilisateur effectif. |
[ -G ] | Renvoie vrai lorsque FILE existe et appartient à l'ID de groupe effectif. |
[ -L ] | Renvoie vrai lorsque FILE existe et est un lien symbolique. |
[ -N ] | Renvoie vrai lorsque FILE existe et a été modifié depuis sa dernière lecture. |
[ -S ] | Renvoie vrai lorsque FILE existe et est un socket. |
Les THEN-COMMANDS et les ELSE-COMMANDS peuvent être n'importe quelle opération UNIX valide ou n'importe quel programme exécutable. Notez que le alors et être les commandes sont séparées par des points-virgules car elles sont considérées comme des éléments complètement séparés d'un script.
Exemple simple de If-Then-Else
Commençons notre leçon par un exemple très simple avec des instructions If-Then-Else.
Voici un exemple de programme :

Si Exemple
Voici la sortie que nous voyons lorsque nous exécutons notre script :
$. ifelse1.shLes valeurs sont les mêmes!
$
Utilisation d'arguments de ligne de commande
Nous pouvons également utiliser des arguments de ligne de commande dans nos scripts et utiliser le nombre d'arguments et les valeurs elles-mêmes comme condition dans l'instruction IF que nous définissons. Nous définissons d'abord un fichier texte avec le contenu suivant :
Je m'appelle LinuxHint. J'adore les serveurs, en particulier ceux d'Ubuntu. Ils sont si
terminale!
Maintenant, nous pouvons écrire un script qui trouve si un mot apparaît dans un fichier texte ou non. Définissons le script maintenant :
chassèrent « Trouver 1 $ dans 2 $ »saisir 1 $ 2 $
si [ $? -ne 0 ]
alors
chassèrent '$1 introuvable dans le fichier $2.'
autre
chassèrent '$1 trouvé dans le fichier $2.'
être
chassèrent 'Script terminé.'
Ce script est très dynamique. Il considère le mot à trouver et le fichier à rechercher à partir de la ligne de commande elle-même. Maintenant, nous sommes prêts à exécuter notre script :
. ifelse2.sh aime bonjour.txtNous verrons une sortie comme :
Trouver l'amourdansbonjour.txtamour trouvédans déposerbonjour.txt.
Scénario terminé.
Vérification du nombre d'arguments de ligne de commande
Dans une instruction IF, nous pouvons même vérifier combien d'arguments de ligne de commande ont été transmis à la commande afin que nous puissions agir sur la même chose :
compter=$ #si [ ! $compte -gt 1 ]
alors
chassèrent 'Pas assez d'arguments'
autre
chassèrent 'Bon travail!'
être
Exécutons ce script maintenant, nous verrons la sortie suivante :

Arguments de ligne de commande
Instructions If-Then-Elif-Else
Nous pouvons également avoir plusieurs instructions IF dans le même bloc pour affiner le chemin de décision que notre programme prend pour exécuter les commandes que nous avons définies. Voici la syntaxe pour définir plusieurs instructions IF dans nos scripts :
siCOMMANDES DE TEST ;alors
RESULTAT-COMMANDES ;
elif
AUTRE-COMMANDES;
alors
ANOTHER-RESULT-COMMANDS;
autre
COMMANDES ALTERNATIVES ;
être
Cela semble assez familier et facile à suivre également. Définissons un exemple simple pour établir le fonctionnement de l'arbre :
compter=$ #si [ $compte -eq 1 ]
alors
chassèrent « Un seul argument trouvé. »
elif [ $compte -eq 2 ]
alors
chassèrent « Mieux, deux arguments trouvés. »
autre
chassèrent « Bon travail, beaucoup d'arguments trouvés ! »
être
Voici ce que nous obtenons avec cette commande :

Si alors Elif Else exemple
Utilisation des déclarations de cas
Les instructions IF-ELSE sont utiles lorsque vous avez une longue liste d'options à choisir. Mais si vous souhaitez effectuer une action uniquement dans quelques cas de correspondance exacte avec le résultat, nous pouvons également utiliser les instructions CASE dans les scripts Bash. Sa syntaxe ressemble à :
CasEXPRESSIONdansCAS 1)COMMANDES À EXÉCUTER ;CAS2)COMMANDES À EXÉCUTER ;
CAS2)COMMANDES À EXÉCUTER ;
...)COMMANDES À EXÉCUTER ;
*)COMMANDES À EXÉCUTER ;
esac
Le dernier cas avec * agit comme cas par défaut et sera exécuté lorsqu'aucun des cas définis ci-dessus ne correspond.
Construisons rapidement un exemple simple en utilisant les instructions CASE :
Cas '$1' dans1)
chassèrent 'La valeur est 1.'
;;
2)
chassèrent 'La valeur est 2.'
;;
3)
chassèrent 'La valeur est 3.'
;;
*)
chassèrent 'Autre valeur transmise.'
esac
Chaque instruction CASE se termine par ;; (doubles points-virgules). Voici ce que nous obtenons avec cette commande :

CAS exemple
Conclusion
Dans cette leçon, nous avons vu comment nous pouvons utiliser les instructions IF-ELSE, IF-THEN-ELIF et CASE dans les scripts Bash que nous définissons pour effectuer des actions spécifiques sur la base de valeurs qui existent dans nos programmes ou transmises par l'utilisateur à l'aide de la position paramètres.