Menu

Tester une variable texte via read [Résolu]

Messages postés
58
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
8 novembre 2018
- - Dernière réponse :  Utilisateur anonyme - 8 nov. 2018 à 00:42
Bonjour,

Quand je mets "toto" dans le read, j'arrive pas à rentrer dans la boucle dite "toto". Le shell perçoit le "toto" comme 0 et je sors donc via la boucle exit 0.

Je ne comprends pas comment tester une variable texte en shell...

Merci d'avance,

while ((chapitre!=0))
do
echo "Quel chapitre (0 pour sortir)? \c"
read chapitre

if ((chapitre==0)) #alors boucle exit 0
then
exit 0
fi

if ((chapitre==toto)) #si "c" alors boucle toto
then
echo $chapitre
fi
done
Afficher la suite 

Votre réponse

1 réponse

0
Merci
salut,

while ((chapitre!=0)) 

d'abord,
chapitre
n'étant pas défini avant le début de la boucle, bah, ça ne boucle jamais ! :(
michael_scott
Messages postés
58
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
8 novembre 2018
-
chapitre et issu de "read chapitre". j'lai pas réécrit car c 'est pas mon problème la variable. Et ma syntaxe était bonne, la première . le test donne les mêmes résultats. Chaque texte est perçu comme un 0. T'as pas la solution, c est pas grave. j attendrai quelque un d autre
Utilisateur anonyme -
dans une évaluation arithmétique (entre parenthèses doubles), les variables sont développées sans qu'il soit besoin de préciser qu'elles doivent l'être :
((variable))
est équivalent à
(($variable))
,
mais pas dans un
test
.
michael_scott
Messages postés
58
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
8 novembre 2018
-
je mets en input pour chapitre toto mais j 'ai la réponse "je vois toujours ça"..... je comprends pas, je pense avoir suivi tes conseils.

le code :
read chapitre

if [ $chapitre =0 ] #sortir du shell
then
echo "je vois toujours ça"
exit 0
fi

if [ $chapitre = toto ] #sortir du shell
then
echo "j ai jamais ce résultat"
exit 0
fi
michael_scott
Messages postés
58
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
8 novembre 2018
-
ok c est bon ça marche, j ai juste un espace manquant avant le 0 de la première boucle,

merci beaucoup. ce message :
" les variables sont développées sans qu'il soit besoin de préciser qu'elles doivent l'être :
((variable)) est équivalent à (($variable)), "

m a beaucoup aidé
messages croisés.
il faut des espaces autour de l'opérateur de comparaison lexicale* égal - tu devrais avoir eu un message d'erreur.

--
  • en fait, de tous les opérateurs de compraison
Commenter la réponse de Utilisateur anonyme