Tests, branchements et boucles

Fermé
code24 Messages postés 32 Date d'inscription samedi 2 mai 2020 Statut Membre Dernière intervention 14 mai 2020 - 12 mai 2020 à 18:54
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 14 mai 2020 à 09:46
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
12 mai 2020 à 19:12
Salut,

À lire…

Merci.
0
code24 Messages postés 32 Date d'inscription samedi 2 mai 2020 Statut Membre Dernière intervention 14 mai 2020
12 mai 2020 à 19:27
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
13 mai 2020 à 07:52
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 samedi 2 mai 2020 Statut Membre Dernière intervention 14 mai 2020
13 mai 2020 à 16:58
je peux faire une boucle while dans mon case ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
13 mai 2020 à 17:01
Moi j'ai fait le contraire, un
case…esac
dans une boucle
until
;-))
0
code24 Messages postés 32 Date d'inscription samedi 2 mai 2020 Statut Membre Dernière intervention 14 mai 2020
13 mai 2020 à 17:10
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
13 mai 2020 à 17:20
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 samedi 2 mai 2020 Statut Membre Dernière intervention 14 mai 2020
13 mai 2020 à 17:43
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
13 mai 2020 à 17:52
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 samedi 2 mai 2020 Statut Membre Dernière intervention 14 mai 2020
13 mai 2020 à 21:39
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
14 mai 2020 à 09:46
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