Bonjour,

En effet, je me suis mélangé les pinceaux avec des apostrophes qui
rendaient mon code invalide et du coup je suis parti dans des trucs
incroyablement compliqués.... :-(
La réponse de Yves est parfaite.

Il y a une deuxième chose que je n'ai pas réussi à faire:

Si à la place d'une valeur numérique comprise entre -16 et 16 je réponds
"xyz" alors le test renvoie ceci:

line 5: [: pp : nombre entier attendu comme expression

J'ai donc modifier le code ainsi:

if [[ $1 != [-0-9] ]];then
   echo "Pas bon";
   exit;
else
   # On crontrôle que $1 soit sompris entre -16 et 16
   if [ $1 -lt 16 ] && [ $1 -gt -16 ]; then
      echo "Ok";
   else
      echo "Pas Ok";
   fi
fi

La première ligne est sensée contrôler que $1 ne soit composée que d'un
signe "-" (ou d'aucun digne) et de chiffres.
Problème: si je rentre -8 le test répond "Pas bon" !

Là encore, j'ai essayé plein de syntaxes mais aucune ne fonctionne.

Merci pour votre aide

Pascal

Le 18 novembre 2011 14:19, Yves Rutschle <[email protected]> a
écrit :

> On Fri, Nov 18, 2011 at 01:09:15PM +0100, Luxpopuli Open source wrote:
> > Dans un script bash, j'ai besoin de contrôler que la valeur taper par
> > l'utilisateur est comprise dans l'intervalle [-16, 16]
> > Et franchement, je n'arrive à rien du tout.
> >
> > S'il y a un pro des expressions régulières, je le bénis d'avance de bien
> > vouloir voler à mon secours ! ;-)
>
> Utiliser des expressions régulières pour faire de
> l'arithmétique, c'est un peu comme utiliser un tourne-vis
> pour planter des clous (on peut y arriver, mais c'est
> vraiment pas fait pour).
>
> Regarde plutôt test(1), options -le, -ge et autres:
>
> if [ $a -lt 16 ] && [ $a -gt -16 ]; then echo "good"; else echo "not
> good"; fi
>
> Y.
>
> --
> Lisez la FAQ de la liste avant de poser une question :
> http://wiki.debian.org/fr/FrenchLists
>
> Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
> vers [email protected]
> En cas de soucis, contactez EN ANGLAIS [email protected]
> Archive: http://lists.debian.org/[email protected]
>
>

Répondre à