Les tests

Réaliser des tests en shell UNIX

Les tests, comme leur dénomination l'indique, permettent de faire un certain nombre de tests, donc de contrôles et d'agir en conséquence.

Syntaxe

Il y a deux syntaxes possibles :

  • test expression logique
  • [ expression logique ]

Cette commande ne retourne pas de résultat sur la sortie standard, elle renvoie le code retour 0 si expression logique est vraie, 1 si elle est fausse.

Expressions logiques

Tests sur les fichiers

test

test réalisé

-f fichier

vrai si fichier est un fichier ordinaire

-d fichier

vrai si fichier est un répertoire

-h fichier

vrai si fichier est un lien symbolique

-c fichier

vrai si fichier est un périphérique caractère

-b fichier

vrai si fichier est un périphérique bloc

-p fichier

vrai si fichier est un tube nommé (FIFO)

-S fichier

vrai si fichier est une socket

-e fichier

vrai si fichier existe

-r fichier

vrai si fichier peut être lu

-w fichier

vrai si fichier peut être modifié

-x fichier

vrai si fichier peut être exécuté

-s fichier

vrai si fichier existe et n'est pas vide

fichier1 -nt fichier2

vrai si fichier1 est plus récent que fichier2

fichier1 -ot fichier2

vrai si fichier1 est plus ancien que fichier2

Tests sur les droits spéciaux

test

test réalisé

-u fichier

vrai si fichier possède le droit SUID

-g fichier

vrai si fichier possède le droit GUID

-k fichier

vrai si fichier possède le "sticky bit"

Tests sur les chaînes de caractères

test

test réalisé

-z chaîne

vrai si chaîne est de longueur 0 (chaîne non définie)

-n chaîne

vrai si chaîne est de longueur supérieure à 0

chaîne1 = chaîne2

vrai si chaîne1 est identique à chaîne2

chaîne1 != chaîne2

vrai si chaîne1 est différente de chaîne2

Astuce

Certains caractères comme "-" peuvent provoquer des erreurs ou poser des problème lors des tests. Pour éviter cela, par exemple dans le cas des chaînes vides, on réalise le test en ajoutant un acaractère anodin ( "x", ou autre ):

I=-d
if [ "x${I}" ="x" ]; then echo I est vide; fi
if [ "x${I}" ="x-d" ]; then traitement; fi

Tests sur les nombres

test

test réalisé

num1 -eq num2

vrai si num1 est égal à num2

num1 -ne num2

vrai si num1 n'est pas égal à num2

num1 -lt num2

vrai si num1 est inférieur à num2

num1 -le num2

vrai si num1 est inférieur ou égal à num2

num1 -gt num2

vrai si num1 est supérieur à num2

num1 -ge num2

vrai si num1 est supérieur ou égal à num2

Opérateurs logiques

test

test réalisé

! expression logique

vrai si expression logique est fausse

expression logique1 -a expression logique2

vrai si les deux expressions sont vraies

expression logique1 -o expression logique2

vrai si l'une des deux expressions est vraie