avec le break, tu n'as plus besoin de toucher à la variable choix.
Sinon, il suffit d'indiquer un texte libre : choix="", ou de supprimer la variable : unset choix
Attention, car dans les deux cas, il faut penser à écrire "$choix" avec les guillemets dans tout les tests, sinon on obtient un résultat inattendu.
Je te propose le code suivant, plus simple, pour ton script :
#!/bin/bash
VOIX=/opt/mbrola/fr4/fr4
TYPE=mb/mb-fr4
while true do
{
xdotool key "Menu+n"
xdotool key "Down"
espeak -v $TYPE -s 130 -p 30 "poursuivre" | mbrola $VOIX - -.au | aplay &
declare -i choix=`zenity --list --title="Poursuite de la navigation" --column="N°" --column="poursuivre" --height="100" \
1 oui \
2 non `
case $choix in
1 ) continue ;;
2 ) break ;;
esac
}
done
exit
PS : Que se passe-t-il s'il y a déjà une lecture en cours au moment où l'utilisateur valide le choix suivant ?
Ne faudrait-il pas tuer aplay d'abord, ou faire un sleep, ou un wait pour attendre la fin de la lecture ?
EDIT : Je crois que y a plus simple pour zenity, avec une fenêtre oui/non où on teste le code retour ($?).
zenity --question --title="Poursuite de la navigation"