Vous êtes ici: Utilitaires / Programmation en BASH / 4 - Les structures de contrôle / 4.1 - La commande test
Tuesday, 17/07/2018

4.1 - La commande test

Pour bien comprendre les structures de contrôle, il est nécessaire d'utiliser une commande permettant la vérification d'une ou plusieurs conditions. La syntaxe de la commande test est: test expression ou plus simplement [ expression ]. Cette commande retourne 0 si l'évaluation de l'expression est vraie et autre chose (généralement 1) si l'évaluation est fausse.

Voici un tableau qui résume les différentes formes que peut prendre l'expression étant évaluée:

 

TypeExpressionRésultat (vrai = 0, faux = 1)


Arithmétique



$nb1 -eq $nb2Vrai si nb1 = nb2
$nb1 -ne $nb2Vrai si nb1 <> nb2
$nb1 -gt $nb2Vrai si nb1 > nb2
$nb1 -ge $nb2Vrai si nb1 >= nb2
$nb1 -lt $nb2Vrai si nb1 < nb2
$nb1 -le $nb2Vrai si nb1 <= nb2


Chaîne

-n "$str1"Vrai si la chaîne str1 contient au moins un caractère
-z "$str1"Vrai si la chaîne str1 est vide (aucun caractère)
"$str1" = "$str2"Vrai si la chaîne str1 est identique à la chaîne str2
"$str1" != "$str2"Vrai si la chaîne str1 n'est pas identique à la chaîne str2





Fichier










-b fichierVrai si le fichier est un fichier de type bloc
-c fichierVrai si le fichier est de type caractère
-d fichierVrai si le fichier est un répertoire
-e fichierVrai si le fichier existe
-f fichierVrai si le fichier est un fichier normal
-r fichierVrai si vous avez le droit de lecture sur le fichier
-s fichierVrai si le fichier existe et n'est pas vide (taille != 0)
-t fichierVrai si le fichier est ouvert dans un terminal
-w fichierVrai si vous avez le droit d'écriture sur le fichier
-x fichierVrai si vous avez le droit d'exécution sur le fichier
-L fichierVrai si le fichier est un lien symbolique
-O fichierVrai si vous êtes propriétaire du fichier
-G fichierVrai si vous êtes membre du groupe propriétaire du fichier
file1 -nt file2Vrai si la date de modification du fichier file1 est plus récente que celle de file2
file1 -ot file2Vrai si la date de modification du fichier file1 est moins récente que celle de file2
file1 -ef file2Vrai si les fichiers file1 et file2 ont le même numéro de inode et existent sur le même périphérique

Spécial

!exprVrai si l'expression expr est fausse
expr1 -a expr2Vrai si l'expression expr1 et expr2 sont toutes deux vraies (ET logique)
expr1 -o expr2Vrai si l'expression expr1 ou expr2 sont vraies (OU logique)

Exemple:

[ -r /etc/lilo.conf ] && echo "Vous avez le droit de lire le fichier /etc/lilo.conf"

 

Ici, une dépendance logique (et) existe entre la commande test (si vous avez le droit de lire le fichier) et la commande echo. Si la condition est vraie (valeur retournée est 0), alors la commande echo s'exécutera.