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 :
- test expression
-
[ 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.
1 | test -f fichier |
A l’aide de la structure de contrôle if, on peut par exemple écrire le code suivant :
1 2 3 4 | if [ -f fichier ] then echo "Fichier présent" fi |
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.
1 | test -d /home/romain |
On peut aussi écrire le code ci-dessous :
1 2 3 4 | if [ -d /home/romain ] then echo "Répertoire présent" fi |
Vérifier la valeur d’une variable
1 2 3 4 | if [ $var -eq 5 ] then echo "Variable égale à 5" fi |
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.