commande test

La commande test permet de vérifier les attributs d’un fichier ou le contenu d’une variable. Elle est souvent utilisée a l’intérieur de scripts Shell (avec la structure de contrôle if).

Syntaxe

Il existe deux syntaxes possibles :

  1. test expression
  2. [ expression ]

La deuxième écriture est plus souvent utilisée car elle ressemble aux autres langages de programmation. Notez qu’il y a un espace obligatoire après le caractère « [ » et avant « ] ». La commande test retourne 0 si la condition est vérifiée sinon 1.

Options

! Expression 
Vrai si l’expression est fausse.

Expression1 -a Expression2 
Vrai si les deux expression sont vrais

Expression1 -o Expression2 
Vrai si l’une des deux expression est vrai.

-n Chaîne 
Vrai si la longueur de la chaîne n’est pas nulle. Cette option est obsolète.

-z Chaîne 
Vrai si la chaîne est vide.

Chaîne1 = Chaîne2 
Vrai si les deux chaînes sont identiques.

Chaîne1 != Chaîne2 
Vrai si les deux chaînes sont différentes

Entier1 -eq Entier2
Vrai si les deux entiers sont egaux.

Entier1 -ge Entier2
Vrai si Entier1 et plus grand ou égal à Entier2.

Entier1 -gt Entier2
Vrai si Entier1 est plus grand que Entier2.

Entier1 -le Entier2
Vrai si Entier1 et plus petit ou égal à Entier2.

Entier1 -lt Entier2
Vrai si Entier1 et plus petit que Entier2.

Entier1 -ne Entier2
Vrai si Entier1 n’est pas égal à Entier2.

Fichier1 -ef Fichier2
Vrai si Fichier1 est Fichier2 ont le mếme inode.

Fichier1 -nt Fichier2
Vrai si Fichier1 est plus récent (date de modification) que Fichier2.

Fichier1 -ot Fichier2
Vrai si Fichier1 est ancien (date de modification) que Fichier2.

-b Fichier
Vrai si Fichier existe et est du type bloc.

-c Fichier
Vrai si Fichier existe et est du type caractère.

-d Fichier
Vrai si Fichier existe et est du type répertoire.

-e Fichier
Vrai si Fichier existe.

-f Fichier
Vrai si Fichier existe et est du type régulier (ordinaire).

-G Fichier
Vrai si Fichier existe et possède un attribut GID d’un groupe existant.

-h Fichier
Vrai si Fichier existe et est du type lien symbolique (pareil que -L).

-k Fichier
Vrai si Fichier existe et a le sticky bit d’activé.

-L Fichier
Vrai si Fichier existe et est du type lien symbolique (pareil que -h).

-O Fichier
Vrai si Fichier existe et possède comme attribut de propriété l’ID d’un utilisateur existant.

-p Fichier
Vrai si Fichier existe et est un tube nommé.

-r Fichier
Vrai si Fichier existe et est accessible en lecture.

-s Fichier
Vrai si Fichier existe et est a une taille supérieure à zéro.

-S Fichier
Vrai si Fichier existe et est une socket.

Exemples

Tester l’existance d’un fichier

L’option -f de la commande test permet de vérifier si c’est un fichier régulier (ordinaire). La ligne ci-dessous, retourne 0 si le fichier existe.

A l’aide de la structure de contrôle if, on peut par exemple écrire le code suivant :

Dans un script Shell, on pourrait ecrire le code ci-dessus; Ce dernier afficherait alors à l’écran le message « Fichier présent » si le fichier existe.

Tester si c’est un répertoire

La commande test dispose de l’option -d qui permet de vérifier si c’est d’un répertoire qu’il s’agit. La ligne suivante retourne 0 si « /home/romain » est un répertoire.

On peut aussi écrire le code ci-dessous :

Vérifier la valeur d’une variable

Le code ci-dessus test la variable $var est égale à 5; Si c’est le cas, alors le message « Variable égale à 5 » est affiché à l’écran.