Dans ce didacticiel sur les scripts shell bash Linux, nous allons apprendre à comparer des nombres, des chaînes et des fichiers dans un script shell à l'aide de l'instruction if. Les comparaisons dans un script sont très utiles et après le résultat de la comparaison, le script exécutera les commandes et nous devons savoir comment nous pouvons les utiliser à notre avantage.
Syntaxe des comparaisons en script shell
if [ conditions/comparaisons] then commandesfi
Un exemple
if [2 -gt 3] then print "2 est plus grand" else print "2 n'est pas plus grand"fi
Ce n'était qu'un simple exemple de comparaison numérique et nous pouvons utiliser des instructions ou des conditions plus complexes dans nos scripts. Apprenons maintenant les comparaisons numériques un peu plus en détail.
Comparer des nombres dans le script shell Linux
C'est l'une des méthodes d'évaluation les plus courantes, c'est-à-dire la comparaison de deux nombres ou plus. Nous allons maintenant créer un script pour effectuer une comparaison numérique, mais avant cela, nous devons connaître les paramètres utilisés pour comparer les valeurs numériques. Vous trouverez ci-dessous la liste des paramètres utilisés pour les comparaisons numériques
- num1 -eq num2 vérifier si le 1er nombre est égal au 2e nombre
- num1 -ge num2 vérifie si le 1er nombre est supérieur ou égal au 2e nombre
- num1 -gt num2 vérifie si le 1er nombre est supérieur au 2e nombre
- num1 -le num2 vérifie si le 1er nombre est inférieur ou égal au 2ème nombre
- num1 -lt num2 vérifie si le 1er nombre est inférieur au 2e nombre
- num1 -ne num2 vérifie si le 1er nombre n'est pas égal au 2e nombre
Maintenant que nous connaissons tous les paramètres utilisés pour les comparaisons numériques, utilisons-les dans un script,
#!/bin/bash# Script pour effectuer des comparaisons numériquesvar1=10var2=20if [ $var2 -gt $var1 ] then echo "$var2 est supérieur à $var1"fi# Deuxième comparaisonSi [ $var1 -gt 30] then echo "$var est supérieur à 30" else echo "$var1 est inférieur à 30"fi
C'est le processus pour faire une comparaison numérique, passons maintenant aux comparaisons de chaînes.
Comparer les chaînes dans le script shell Linux
Lors de la création d'un script bash, nous pouvons également être amenés à comparer deux chaînes ou plus et la comparaison des chaînes peut être un peu délicate. Pour faire des comparaisons de chaînes, les paramètres utilisés sont
- var1 =var2 vérifie si var1 est identique à la chaîne var2
- var1 !=var2 vérifie si var1 n'est pas identique à var2
- var1
- var1> var2 vérifie si var1 est supérieur à var2
- -n var1 vérifie si var1 a une longueur supérieure à zéro
- -z var1 vérifie si var1 a une longueur de zéro
Remarque :- Vous avez peut-être remarqué que supérieur au symbole (>) et inférieur au symbole (<) utilisés ici sont également utilisés pour la redirection pour stdin ou stdout sous Linux. Cela peut être un problème lorsque ces symboles sont utilisés dans nos scripts, alors que peut-on faire pour résoudre ce problème.
La solution est simple, lorsque vous utilisez l'un de ces symboles dans des scripts, ils doivent être utilisés avec un caractère d'échappement, c'est-à-dire comme "/>" ou "/<".
Créons maintenant un script effectuant les comparaisons de chaînes.
Dans le script, nous vérifierons d'abord l'égalité des chaînes, ce script vérifiera si le nom d'utilisateur et nos variables définies sont identiques et fournira une sortie basée sur cela. Deuxièmement, nous ferons supérieur ou inférieur à la comparaison. Dans ces cas, le dernier alphabet, c'est-à-dire z sera le plus élevé et l'alphabet a sera le plus bas lors de la comparaison. Et les majuscules seront considérées comme moins qu'une minuscule.
#!/bin/bash# Script pour effectuer une comparaison d'égalité de chaînename=linuxtechiif [ $USER =$name ] then echo "L'utilisateur existe" else echo "User not found"fi# script pour vérifier les comparaisons de chaînesvar1=avar2=zvar3=Zif [ $var1 \> $var2 ] then echo "$var1 est supérieur" else echo "$var2 est supérieur"fi# Comparaisons minuscules et majusculesif [ $var3 \> $var1 ] then echo "$var1 est supérieur"fi
Nous allons maintenant créer un autre script qui utilisera "-n ” &“-z ” avec des chaînes pour vérifier si elles contiennent une valeur
#!/bin/bash# Script pour voir si la variable contient une valeur ou notvar1=" "var2=linuxtechiif [ -n $var1 ] then echo "la chaîne n'est pas vide" else echo "la chaîne fournie est vide"fiIci, nous n'avons utilisé que le paramètre "-n" mais nous pouvons également utiliser "-z “. La seule différence est qu'avec '-z', il recherche une chaîne de longueur nulle tandis que le paramètre "-n" recherche une valeur supérieure à zéro.
Comparaison de fichiers dans Linux Shell Script
Cela pourrait être la fonction de comparaison la plus importante et est probablement la plus utilisée que toute autre comparaison. Les paramètres utilisés pour la comparaison de fichiers sont
- -d fichier vérifie si le fichier existe et s'il s'agit d'un répertoire
- -e file vérifie si le fichier existe sur le système
- -w file vérifie si le fichier existe sur le système et s'il est accessible en écriture
- -r file vérifie si le fichier existe sur le système et s'il est lisible
- -s file vérifie si le fichier existe sur le système et s'il n'est pas vide
- -f file vérifie si le fichier existe sur le système et s'il s'agit d'un fichier
- -O file vérifie si le fichier existe sur le système et s'il appartient à l'utilisateur actuel
- -G file vérifie si le fichier existe et si le groupe par défaut est le même que l'utilisateur actuel
- -x file vérifie si le fichier existe sur le système et est exécutable
- file A -nt file B vérifie si le fichier A est plus récent que le fichier B
- file A -ot file B vérifie si le fichier A est plus ancien que le fichier B
Voici un script utilisant la comparaison de fichiers
#!/bin/bash# Script pour vérifier la comparaison de fichiers dir=/home/linuxtechiif [ -d $dir ] then echo "$dir est un répertoire" cd $dir ls -a else " fi
De même, nous pouvons également utiliser d'autres paramètres dans nos scripts pour comparer des fichiers. Ceci termine notre tutoriel sur la façon dont nous pouvons utiliser les comparaisons numériques, de chaînes et de fichiers dans les scripts bash. N'oubliez pas que la meilleure façon d'apprendre est de les pratiquer vous-même.
Lire aussi :Comment créer des liens matériels et logiciels (lien symbolique) sur les systèmes Linux