Exemple Bash If-Then-Else

Bash If Then Else Example



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

Si Exemple





Voici la sortie que nous voyons lorsque nous exécutons notre script :

$. ifelse1.sh
Les 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.txt

Nous verrons une sortie comme :

Trouver l'amourdansbonjour.txt
amour 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

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

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' dans
1)
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

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.