> | ./ann-pgm1: test: ss: integer expression expected
> | non ok toe le
>
> Dans les 2 cas, j'ai la bonne réponse....
> Dans le deuxième cas, il y a une alerte... pas grave, je sais que ma zone a
> autre chose que des blancs!
oui, mais c'est pas trop une bonne idee de laisser une "alerte"
meme si ca marche.
> > if test "$toe" -le " "; [...]
> > ./ann-pgm1: test: ss: integer expression expected
>
> Comme dirait man bash, -le est un opérateur arithmétique. Il sert à
> comparer des entiers.
Comme indique, " $a -le $b " sert a comparer un nombre $a avec $b
or, d'apres les indications :
too=" "
toe="ss"
ce ne sont pas des nombres, donc, continuer a utiliser une comparaison
de nombre n'est pas une bonne idee,
donc, il faut utiliser une comparaison de chaines.
Neanmoins, c'est vrai que
toe=" " # y'a 2 espaces
if [ "$toe" == " " ]; # y'a 3 espaces
then
echo "ok: toe le"
else
echo " non ok toe le"
fi
retourne " non ok toe le" parce que le nombre d'espaces est
pris en compte, et pour que la comparaison soit vraie, il faut que
$toe soit egal a " " (3 espaces exactement ...).
Donc, pour que ca marche quelque soit le nombre d'espaces,
une solution est d'enlever les guillemets :
toe=" " # y'a 2 espaces
if [ x$toe == x ]; # pour le coup, x est vraiment indispensable
then
echo "ok: que des espaces ou bien toe est vide"
else
echo " non ok toe"
fi
par contre, si toe="aa bb", alors, il va y avoir une "alerte" (voir mail
precedent)
a toi de voir si ca peut se produire... si, oui, prendre des mesures pour
l'eviter.
Jean-Luc.