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 |