#1 Le 29/12/2017, à 15: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, à 15: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, à 15: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.
En ligne
#3 Le 29/12/2017, à 15: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, à 15:56
- Watael
Re : Question bash : peux t'on raccourcir cette condtion avec while ?
Peut être avec les instructions switch, case et default ?
en bash ?
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#5 Le 29/12/2017, à 16: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, à 17:07
- erresse
Re : Question bash : peux t'on raccourcir cette condtion avec while ?
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 le problème solutionné, 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, à 17: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, à 19:03
- Watael
Re : Question bash : peux t'on raccourcir cette condtion avec while ?
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 ?
encore un effort et les accolades disparaîtront aussi.
Dernière modification par Watael (Le 29/12/2017, à 19:05)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#9 Le 29/12/2017, à 19:14
- Hizoka
Re : Question bash : peux t'on raccourcir cette condtion avec while ?
certainement pas mon petit monsieur !
vive les accolades !!!!
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne