Tests, branchements et boucles

code24 Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je cherche comment écrire un script qui fait cette tâche suivante:

Affichier :

Le menu:
#################
(C)ontinuer
(Q)uitter
#################
Votre choix (C ou Q):
Le script affiche le menu.
Saisit le choix puis le valide. Le choix est composé d’une seule touche C ou Q (pas de <retour>. Si le choix n’est ni “C”, ni “Q” le script affiche: “Votre choix est invalide”, fait une pause (appuyez sur une touche pour continuer), puis réaffiche le menu.
Si le choix est C, réaffiche le menu sans plus
Si le choix est Q, quitte le script.

6 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

À lire…

Merci.
0
code24 Messages postés 32 Date d'inscription   Statut Membre Dernière intervention  
 
Voici ce que j'ai essayé, mais sans succès :


Ps3='Votre choix (C ou Q)
choix=("(q)uitter" (C)ontinuer"


echo"##########"
echo "(C)ontinuer"
echo"(Q)uitter
echo"#########"

Select choix in "(C)ontinuer" (Q)uitter"
do
echo votre choix est : $choix
If [[ $choix == Q ]] : then
break
done
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
C'est un peu maigre ;-(
Il n'y a qu'une condition traitée alors que ton énoncé en demande plus d'une ;-\

Démonstration finale :



Voir :
man -P "less -p \"^ +read \"" bash

man -P "less -p \"^ +while \"" bash

man -P "less -p \"^ +until \"" bash

man -P "less -p \"^ +case \"" bash

man -P "less -p \"^ +continue \"" bash

man -P "less -p \"^ +break \"" bash
0
code24 Messages postés 32 Date d'inscription   Statut Membre Dernière intervention  
 
je peux faire une boucle while dans mon case ?
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Moi j'ai fait le contraire, un
case…esac
dans une boucle
until
;-))
0
code24 Messages postés 32 Date d'inscription   Statut Membre Dernière intervention  
 
donc, ma condition until est pour la condition " mon choix est C réaffiche le menu"
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Non, un seul
until
pour tout :

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
code24 Messages postés 32 Date d'inscription   Statut Membre Dernière intervention  
 
pas facile, le code me dit qu'il y a une erreur au niveau de mon "do"

0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
J'ai mis une capture d'écran parce que c'était plus facile de flouter certaines parties ;-_\
Pour toi, merci de poster ton code entre les balises
<code></code>
.

until
doit avoir une condition.
read
a des options et une variable doit lui être affectée pour contenir la réponse. Sans variable définie, c'est la variable
${REPLY}
qui est censée contenir la réponse.
echo
est là pour ajouter une ligne vide pour plus de lisibilité.

Pour finir, je t'ai donné à lire dans mon post #3 la partie du
man bash
concernant chaque commande , merci de consulter la partie de la page de man associée à chacune d'elle.
0
code24 Messages postés 32 Date d'inscription   Statut Membre Dernière intervention  
 
Je suis bloqué, et je ne vois pas comment intégrer ma boucle à l'intérieur

j'ai vue les différente structure pour les boucle et rien ne marche

Je me demande pourquoi juste ce code ne fonctionne pas

echo -e "\n###############
(C)ontinuer
(Q)uitter
################"
select choix in "q" "c"
do
if [[ $choix == "c" ]]; then
echo "Votre choix (C ou Q) : $choix"
elif [[ $choix == "q" ]]; then
echo "Votre choix (C ou Q) : $choix"
break
else echo "Votre choix est invalide"
fi
done
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Il marche ton code…

$ ./code24.sh 

###############
(C)ontinuer
(Q)uitter
################
1) q
2) c
#? c
Votre choix est invalide
#? c
Votre choix est invalide
#? q
Votre choix est invalide
#? 2
Votre choix (C ou Q) : c
#? 1
Votre choix (C ou Q) : q

$


;-))
0