Test (Unix)
# Test (Unix)

test est une commande Unix qui permet de créer des expressions conditionnelles.

## Syntaxe

test Expression ou [ Expression ] ou [[ Expression ]]

Exemple : test -f /home/test ou [ -f /home/test ] ou [[ -f /home/test ]]

## Description

La commande test évalue l'expression passée en argument. Dans sa seconde forme, chaque crochet () doit obligatoirement être séparé de la condition par un espace. Les fonctions et opérateurs sont traités comme des arguments différents par la commande test. L'expression conditionnelle doit faire référence à une condition à laquelle il est possible de répondre par vrai (true) ou faux (false).

## Fonctions

Les fonctions suivantes sont utilisées pour construire l'expression conditionnelle et retournent toutes vrai (true) si la condition est satisfaite :

### Comparaisons au niveau des fichiers

Ces comparaisons ne sont pas normalisées (en particulier si Fichier1 n'existe pas) mais sont souvent disponibles.

### Opérateurs

Toutes les fonctions ci-dessus peuvent être combinées avec les opérateurs suivants :

## Codes de retour

La commande test retourne les valeurs suivantes :

## Exemples

### Pour tester si un fichier existe et n'est pas vide

Si le fichier Nom_du_fichier dans le premier argument envoyé au script shell ($1) n'existe pas ou est vide, la commande test va retourner 1 et le script va afficher "Le fichier nom_du_fichier n'existe pas ou est vide.". Mais si au contraire le fichier existe et n'est pas vide, alors la commande test va retourner 0 et le script va afficher "Le fichier nom_du_fichier existe.".

Note : Il doit y avoir un espace entre l'option -s et le nom du fichier.

Les guillemets autour de $1 permettent de s'assurer que le test fonctionnera même si la valeur de $1 est nulle. Si les guillemets sont retirés et que $1 ne vaut rien, alors la commande test va retourner une erreur du type "test: argument expected.".

### Pour vérifier qu'au moins un argument a été envoyé au script shell

Cette fois-ci, on utilise la deuxième notation de la commande test (les crochets). Dans le script ci-dessus, $# correspond au nombre d'arguments envoyés sur la ligne de commande. On regarde donc si ce nombre est strictement inférieur (-lt) à 1 et si c'est le cas, on affiche une erreur et on arrête le script en retournant un code d'erreur 2.

