La commande "test"
La commande 'test' indique le succès ou l'échec par la valeur qu'elle retourne, et permet aux programmes shell de prendre une décision selon le résultat vrai ou faux d'une EXPRESSION ;
cette commande est toujours utilisée à l'intérieur d'une commande de contrôle de condition (if, while, until). La commande 'test' effectue trois types de tests :
- teste certaines caractéristiques des fichiers.
- compare des chaînes de caractères.
- effectue des comparaisons numériques.
Le caractère crochet ouvert "[" est un synonyme pour test. Lorsqu'on utilise l'alias '[', le dernier argument doit être un crochet fermant ( ] ). Exemple :
$b=2
$[ $a -eq $b ] = cette commande teste si $a = $b
$test $a -eq $b = cette commande teste si $a = $b
>echo "lecture"
>fi
lecture
$if [ -d /bin ]
>then
>else
>fi
/bin est un répertoire
$
TEST est une commande intrinsèque du Shell, les options sont les suivantes : test $x : vrai si x est une chaîne non vide
test -z "$x" : vrai si x est une chaîne vide
test -f $x : vrai si x est un fichier ordinaire
test -r $x : vrai si x est un fichier en lecture
test -w $x : vrai si x est un fichier en écriture
test -d $x : vrai si x est un nom de répertoire
test $x = $y : vrai si x et y contiennent des chaînes de caractères identiques.
test $x ! = $y : vrai si x et y contiennent des chaînes de caractères différentes
test $x -eq $y : vrai si x et y contiennent des valeurs numériques égales
test $x -ne $y : vrai si x et y contiennent des valeurs numériques différentes
test $x -gt $y : vrai si x supérieur à y
test $x -lt $y : vrai si x inférieur à y
test $x -ge $y : vrai si x supérieur ou égal à y
test $x - le $y : vrai si x inférieur ou égal à y
Attention: Si l'on n'est pas certain d'avoir initialisé la variable avec laquelle on travaille, il est toujours préférable de la mettre entre "..." sous peine d'avoir le message :
ksh: test: 0403-020 Spécifiez un paramètre pour cette commande et une sortie en erreur du fichier de commandes
Exemple :
On teste que i est un nombre 31L'opérateur "-a" a précédence sur l'opérateur "-o".On peut forcer la précédence par des parenthèses :