GNU/Linux >> Tutoriels Linux >  >> Linux

Comment comparer des nombres et des chaînes dans le script shell Linux

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"fi 

Ici, 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


Linux
  1. Comment Noëlsifier votre terminal et votre shell Linux

  2. Comment définir et utiliser des fonctions dans Linux Shell Script

  3. Comment définir/créer des variables d'environnement et de shell sous Linux

  4. Comment comparer des chaînes dans les scripts shell bash

  5. Comment changer de shell sous Linux

Comment installer et utiliser ZSH Shell sous Linux

Comment exécuter un script Shell en tant que service SystemD sous Linux

Comment installer et utiliser Nu Shell sous Linux

Comment créer et exécuter un script shell dans Ubuntu 22.04

Comment installer Fish Shell sur Ubuntu et Linux Mint

Script Shell/Bash pour trouver des nombres premiers sous Linux