Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

Ubuntu 18.04 LTS
Ubuntu-fr propose des clés USB de Ubuntu et toutes ses « saveurs » ainsi qu'un magnifique t-shirt pour cette toute nouvelle version d'Ubuntu !

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/12/2017, à 16:16

GammaDraconis

Question bash : peux t'on raccourcir cette condtion avec while ?

Bonjour,

Pour les besoins d'un script bash, j'ai ceci comme condition :

while [ "$choix" != "0" ] && [ "$choix" != "1" ] && [ "$choix" != "2" ] && [ "$choix" != "3" ] && [ "$choix" != "4" ] && [ "$choix" != "5" ] && [ "$choix" != "6" ] && [ "$choix" != "7" ] && [ "$choix" != "8" ]
do
    read -p "Désolé, je ne comprend pas votre réponse, les seuls choix possibles sont les valeurs de 0 à 8 mais aucune autre ! " choix
    clear
done

Vous l'avez compris, l'utilisateur doit saisir obligatoirement 0 ou 1 ou 2 ou... jusqu'à 8 sinon ça lui repose la question tant qu'il n'a pas saisie la bonne valeur.

Cela fonctionne mais le soucis c'est que c'est trop long a écrire (imaginez si il y avait 20 valeur?), auriez vous une solution pour raccourcir au maximum la vérification des possibilités acceptés (par exemple avec un intervalle de valeur : if [0-8]....)

Merci d'avance pour votre réponse.

Dernière modification par GammaDraconis (Le 29/12/2017, à 16:17)


PC1 (Xiaomi Air 13) : Ubuntu 18.04LTS/Gnome et ArchLinux/Plasma (dualboot)
PC2 (Lenovo Legion Y520) : Linux Mint 19/Cinnamon, Fedora 28/Gnome, Solus (tripleboot)

Hors ligne

#2 Le 29/12/2017, à 16:29

Watael

Re : Question bash : peux t'on raccourcir cette condtion avec while ?

salut,

until ((0<=${choix:=-1} && $choix<=8)); do read choix; done

eval, c'est mal.

En ligne

#3 Le 29/12/2017, à 16:34

Nasman

Re : Question bash : peux t'on raccourcir cette condtion avec while ?

Peut être avec les instructions switch, case et default ?


PC fixe et portable avec Xenial 64 bits

Hors ligne

#4 Le 29/12/2017, à 16:56

Watael

Re : Question bash : peux t'on raccourcir cette condtion avec while ?

Nasman a écrit :

Peut être avec les instructions switch, case et default ?

en bash ?


eval, c'est mal.

En ligne

#5 Le 29/12/2017, à 17:39

Hizoka

Re : Question bash : peux t'on raccourcir cette condtion avec while ?

Salut,

while [[ ${choix} != [0-8] ]]
do
...
done

Hors ligne

#6 Le 29/12/2017, à 18:07

erresse

Re : Question bash : peux t'on raccourcir cette condtion avec while ?

Watael a écrit :

salut,

until ((0<=${choix:=-1} && $choix<=8)); do read choix; done

Bonjour,
Pourquoi ce test bizarre et compliqué "(0<=${choix:=-1} ...)", plutôt que "(${choix}>=0 ...)" ?


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#7 Le 29/12/2017, à 18:09

GammaDraconis

Re : Question bash : peux t'on raccourcir cette condtion avec while ?

Merci à vous !


PC1 (Xiaomi Air 13) : Ubuntu 18.04LTS/Gnome et ArchLinux/Plasma (dualboot)
PC2 (Lenovo Legion Y520) : Linux Mint 19/Cinnamon, Fedora 28/Gnome, Solus (tripleboot)

Hors ligne

#8 Le 29/12/2017, à 20:03

Watael

Re : Question bash : peux t'on raccourcir cette condtion avec while ?

erresse a écrit :

Pourquoi ce test bizarre et compliqué "(0<=${choix:=-1} ...)", plutôt que "(${choix}>=0 ...)" ?

${choix:=-1} parce que si choix n'existe pas, il est évalué à zéro.

+1: [[ ${choix} != [0-8] ]]
mais où sont les guillemets ? lol
encore un effort et les accolades disparaîtront aussi. wink

Dernière modification par Watael (Le 29/12/2017, à 20:05)


eval, c'est mal.

En ligne

#9 Le 29/12/2017, à 20:14

Hizoka

Re : Question bash : peux t'on raccourcir cette condtion avec while ?

certainement pas mon petit monsieur !
vive les accolades !!!! smile

Hors ligne