6.12 Condition test
-
Commande
test
- Utilisée dans les conditions en Bourne shell
- Évalue l'expression
- Retourne 0 si sa valeur est vraie
- Retourne ¹ 0 sinon
test expr
[ expr ]
-
Expression sur les fichiers
-
-f file : existe et non répertoire
- -d file : existe et est un répertoire
- -s file : existe et est de taille non nulle
- -r file : existe et droit en lecture
- -w file : existe et droit en écriture
- -x file : existe et droit d'exécution
- Chaînes de caractères
-
str1 = str2
str1 != str2
Vrai si les chaînes sont égales (différentes)
- -z str : vrai si chaîne de longueur nulle
- -n str : vrai si chaîne de longueur non nulle
- Nombres, comparaison
-
n1 -eq n2 égaux
n1 -ne n2 non égaux
n1 -gt n2 plus grand que
n1 -ge n2 plus grand ou égal
n1 -lt n2 plus petit que
n1 -le n2 plus petit ou égal
- Opérateurs
-
! unaire de négation
- -a et logique
- -o ou logique
- ( expr ) paranthésage
\(
et \)
sinon interprétées par le shell
Exemple de test
% cat decompte
#! /bin/sh
var=10
while test $var -ge 4
do
echo " $var"
var=`expr $var - 1`
done
% decompte
10
9
8
7
6
5
4
Utilisation de test
Protection et vérification
% cat protect
#! /bin/sh
if test $# -ne 1
then
echo " erreur nombre d'arguments" 1>&2
exit 1
fi
FILE=$1
if test ! -f $FILE
then
echo " erreur : $FILE n'existe pas" 1>&2
exit 1
else
echo " $FILE existe, je l'ai rencontre "
fi
cat $FILE
%
% protect f1 f2
erreur : nombre d'arguments
% protect xx
erreur : xx n'existe pas
% protect filtre
filtre existe, je l'ai rencontre
ligne 1
ligne 2
...