Contenu | Rechercher | Menus

Annonce

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)


Discussion sur mon script de post-install pour Ubuntu 20.04LTS : https://forum.ubuntu-fr.org/viewtopic.php?id=2026344
Lien direct script : https://github.com/simbd/Ubuntu_20.04LTS_PostInstall
Démo vidéo (peertube) : https://video.ploud.fr/videos/watch/fb7 … 0d252ed2db

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

Connected \o/
Welcome to sHell. · eval is evil.

Hors 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 sous Bionic 64 bits et portable avec Focal 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 ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors 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

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

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 !


Discussion sur mon script de post-install pour Ubuntu 20.04LTS : https://forum.ubuntu-fr.org/viewtopic.php?id=2026344
Lien direct script : https://github.com/simbd/Ubuntu_20.04LTS_PostInstall
Démo vidéo (peertube) : https://video.ploud.fr/videos/watch/fb7 … 0d252ed2db

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)


Connected \o/
Welcome to sHell. · eval is evil.

Hors 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


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne