Commande de test de bash

Commande de test de bash
Dans Bash Shell, la commande de test compare un élément à un autre et renvoie vrai ou faux. Dans Bash Scripting, la commande de test fait partie intégrante des instructions conditionnelles qui contrôlent la logique et le flux de programme.

Ce guide montre comment utiliser la commande de test bash.

Commande de test

La commande de test prend un EXPRESSION comme argument. Après avoir calculé l'expression, le test renvoie une valeur à la variable bash «$?". Si la valeur est 0, alors l'évaluation de l'expression était vraie. Si la valeur est 1, alors l'évaluation de l'expression était fausse.

Il y a deux syntaxes pour utiliser la commande de test.

$ Expression de test
$ [Expression]

Notez que dans le cas de «[», il y a un espace aux deux extrémités du EXPRESSION.

Test de test

Voici un court exemple du fonctionnement de la commande de test. Nous vérifierons si 1 est égal à 2. Si c'est vrai, alors la sortie sera «vraie». Sinon, la sortie sera «fausse».

$ test 1 -eq 2 && echo «true» || écho «faux»

Faisons-le.

  • Test: la commande de test.
  • 1: le premier élément de comparaison.
  • -Eq: Méthode de comparaison (si les valeurs sont égales).
  • 2: le deuxième élément de comparaison.

Si la partie test est vraie, alors la première commande echo s'exécutera. Sinon, la deuxième commande echo exécutera.

La même commande peut être exprimée en utilisant «[».

$ [1 -eq 2] && echo «true» || écho «faux»

Expression

L'expression est ce qui donne à la commande de test son vrai pouvoir. Le test peut utiliser des chaînes, des fichiers et des entiers à titre de comparaison. Voici une liste rapide de tous les formats d'expression de test disponibles.

Chaîne
En programmation, une chaîne est un ensemble de caractères qui sont généralement utilisés pour représenter le texte. Par exemple, «Hello World» dans la commande Echo suivante est traité comme une chaîne.

$ Echo «Hello World."

La commande de test prend en charge les expressions de chaîne suivantes.

  • -n: la longueur de la chaîne est non nulle.
  • -z: la longueur de la chaîne est nul.
  • : La valeur de la chaîne n'est pas nulle (quivalente à «-n»).
  • =: String_a et string_b sont égaux.
  • !=: Les cordes string_a et string_b ne sont pas égales.

Essayons ces expressions.

$ [-n «Hello World»] && echo «true» || écho «faux»
$ [-Z «Hello World»] && echo «true» || écho «faux»
$ ["Hello World" != «Hello World»] && écho «true» || écho «faux»
$ ["Hello World" = "Hello World"] && echo "true" || écho «faux»

Entier

Le tout premier exemple de ce guide démontre la comparaison des entiers. Il existe plus de façons de comparer les entiers.

  • -EQ: Integer_A est égal à Integer_B.
  • -NE: Integer_A n'est pas égal à Integer_B
  • -GE: Integer_A est supérieur ou égal à Integer_B.
  • -GT: Integer_A est supérieur à Integer_B.
  • -LE: Integer_A est inférieur ou égal à Integer_B.
  • -LT: Integer_A est inférieur à Integer_B.

Mettons ces expressions en action.

$ [5 -eq 10] && echo «true» || écho «faux»
$ [5 -gt 2] && echo «true» || écho «faux»
$ [4 -le 5] && echo «true» || écho «faux»

Déposer

Les fichiers peuvent également faire partie de l'expression. Voici la liste des expressions de fichiers prises en charge.

  • -EF: File_A et File_B ont un appareil similaire et un numéro d'inode. Si c'est vrai, cela signifie que les fichiers sont très probablement symbolisés. En savoir plus sur les liens symboliques Linux.
  • -NT: En termes de date de modification, File_A est plus récent que File_B.
  • -OT: File_A est plus ancien que File_B.

Le reste des expressions de fichiers prises en charge est liée à une seule propriété d'un seul fichier.

  • -e: file_a existe.
  • -f: file_a existe et un fichier régulier.
  • -d: file_a existe et est un répertoire.
  • -r: file_a existe avec les autorisations de lecture.
  • -w: file_a existe avec des autorisations d'écriture.
  • -x: file_a existe avec les autorisations d'exécution.
  • -S: File_A existe et la taille du fichier est supérieure à zéro.
  • -O: file_a existe et le propriétaire est un identifiant utilisateur efficace.
  • -G: file_a existe et le propriétaire est un identifiant de groupe efficace.
  • -h: file_a existe et c'est un lien symbolique.
  • -L: file_a existe et c'est un lien symbolique.
  • -b: file_a existe. C'est un fichier spécial de bloc.
  • -c: file_a existe. C'est un fichier spécial de caractère.
  • -S: file_a existe. C'est une prise.

Jetons un coup d'œil à quelques exemples.

$ [-x / usr / bin / bash] && echo $?
$ [-s / bin / bash] && echo $?
$ [-r / bin] && echo $?
$ [-e / hello_world] && echo "true" || écho "faux"

Implémentation de test dans les scripts bash

Jusqu'à présent, nous avons démontré comment utiliser la commande de test pour déterminer si une certaine condition est vraie ou fausse. Nous pouvons implémenter cela dans des scripts bash pour prendre des décisions utiles.

Jetez un œil au court script suivant.

#!/ bac / bash
si [$ (whoami) = root]; alors
écho à la «racine»
autre
écho «pas root»
Fi

Ici, l'instruction IF vérifiera si la condition est vraie ou fausse. En utilisant la commande de test, nous pouvons facilement obtenir la valeur booléenne.

Exécutez le script avec et sans privilège racine.

$ ./factice.shot
$ sudo ./factice.shot

C'est une simple démonstration de déclaration IF-Else. N'hésitez pas à consulter les instructions Bash If-Else pour d'autres applications approfondies.

Dernières pensées

La commande de test est simple mais puissante. Ce guide explique et démontre diverses façons d'utiliser le test. La liste complète de toutes les expressions prises en charge est disponible sur la page de l'homme.

$ MAN TEST

Happy Computing!