[bug]Comportement bizarre d'un bout de script (if...elif...else)
Résolu
Swiss Knight
Messages postés
2257
Statut
Membre
-
Swiss Knight Messages postés 2257 Statut Membre -
Swiss Knight Messages postés 2257 Statut Membre -
Salut,
J'ai un bout de script qui se comporte bizarrement dans un cas, et ça marche tip-top dans l'autre... sauf que je ne comprends pas pourquoi ça ne joue pas dans le premier cas...
1er cas (mauvaise solution) :
2ème cas (bonne solution) :
C'est directement copiable-collable dans une console.
La nuance est subtile, c'est au niveau de la 14ème ligne du premier cas que je pige pas en fait...
Je lui demande en gros :
"si le bouton valider a été appuyé, et si string_o est non nulle (donc un choix a été de mot a été validé) alors echo le mot qui a été validé.
Le script lui, saute cette étape comme si elle n'était pas vérifiée pour finir sur le else final... quand bien même on a choisi le mot dans la liste !!!
-- BEGIN_OF_EDIT
En fait c'est même plus subtil que ça...
Il suffit d'inverser les deux tests du elif dans la 1ère solution pour qu'elle se comporte bien comme il faut comme la seconde :
elif [[ $? == 0 ]] && [[ -n "${string_o}" ]];
devient :
elif [[ -n "${string_o}" ]] && [[ $? == 0 ]];
Et ça marche.
-- END_OF_EDIT
;)
Merci de vos éclairages précieux...!!
PS : c'est vraiment top la nouvelle fonctionnalité de coloration syntaxique sur le forum :-D
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
J'ai un bout de script qui se comporte bizarrement dans un cas, et ça marche tip-top dans l'autre... sauf que je ne comprends pas pourquoi ça ne joue pas dans le premier cas...
1er cas (mauvaise solution) :
unset string_o; existing_words="salut, bonjour, aurevoir"; foo="hello"
string_o=$(echo $foo | zenity --list --multiple --separator=", " --title="Add words" --text="Add words \nExisting words are : ${existing_words}" --column="Words")
##### mauvaise solution ###########################################################
if [[ $? == 0 ]] && [[ -z "${string_o}" ]];
then
zenity --question --title="Delete all words ?" --text="Supprimer tous les mots ?"
if [[ $? == 0 ]]
then
echo "on a choisi d'effacer tous les mots"
else
echo "on sort du choix 2 sans rien faire"
#exit ### <- on sort si on a clic sur annuler (choix 2).
fi
elif [[ $? == 0 ]] && [[ -n "${string_o}" ]];
then
echo ${string_o}
else
echo "on sort du choix 1"
#exit ### <- on sort si on a clic sur annuler (choix 1).
fi
2ème cas (bonne solution) :
unset string_o; existing_words="salut, bonjour, aurevoir"; foo="hello"
string_o=$(echo $foo | zenity --list --multiple --separator=", " --title="Add words" --text="Add words \nExisting words are : ${existing_words}" --column="Words")
##### bonne solution ###########################################################
if [[ $? == 1 ]];
then
echo "on sort du choix 1"
#exit ### <- on sort si on a clic sur annuler (choix 1).
elif [[ -z "${string_o}" ]] && [[ $? == 0 ]];
then
zenity --question --title="Delete all words ?" --text="Supprimer tous les mots ?"
if [[ $? == 0 ]]
then
echo "on a choisi d'effacer tous les mots"
else
echo "on sort du choix 2 sans rien faire"
#exit ### <- on sort si on a clic sur annuler (choix 2).
fi
else
echo ${string_o}
fi
C'est directement copiable-collable dans une console.
La nuance est subtile, c'est au niveau de la 14ème ligne du premier cas que je pige pas en fait...
Je lui demande en gros :
"si le bouton valider a été appuyé, et si string_o est non nulle (donc un choix a été de mot a été validé) alors echo le mot qui a été validé.
Le script lui, saute cette étape comme si elle n'était pas vérifiée pour finir sur le else final... quand bien même on a choisi le mot dans la liste !!!
-- BEGIN_OF_EDIT
En fait c'est même plus subtil que ça...
Il suffit d'inverser les deux tests du elif dans la 1ère solution pour qu'elle se comporte bien comme il faut comme la seconde :
elif [[ $? == 0 ]] && [[ -n "${string_o}" ]];
devient :
elif [[ -n "${string_o}" ]] && [[ $? == 0 ]];
Et ça marche.
-- END_OF_EDIT
;)
Merci de vos éclairages précieux...!!
PS : c'est vraiment top la nouvelle fonctionnalité de coloration syntaxique sur le forum :-D
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
A voir également:
- [bug]Comportement bizarre d'un bout de script (if...elif...else)
- Script vidéo youtube - Guide
- Iptv bug - Forum Box et Streaming vidéo
- Bug chromecast - Guide
- Mas script - Accueil - Windows
- Bug de chaîne IPTV ✓ - Forum TV & Vidéo
?
Je coche résolu donc ;)
Merci.