Bash: comparaison
gardiendelanuit
Messages postés
1772
Date d'inscription
Statut
Membre
Dernière intervention
-
gardiendelanuit Messages postés 1772 Date d'inscription Statut Membre Dernière intervention -
gardiendelanuit Messages postés 1772 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Hé oui encore un problème ce soir: je veux vérifier (en bash) si la personne ne s'est pas trompée de frappe: 0 pour oui et 1 pour non par exemple.
En effet j'ai testé plusieurs bricoles puisque les principales ne marchaient pas car le =! semble comparer des lettres et -ne des chiffres...
Seulement voilà si jamais l'utilisateur tape un "a" au lieu d'un "1" ... comment le vérifier?
Merci d'avance pour vos réponses :)
Hé oui encore un problème ce soir: je veux vérifier (en bash) si la personne ne s'est pas trompée de frappe: 0 pour oui et 1 pour non par exemple.
En effet j'ai testé plusieurs bricoles puisque les principales ne marchaient pas car le =! semble comparer des lettres et -ne des chiffres...
Seulement voilà si jamais l'utilisateur tape un "a" au lieu d'un "1" ... comment le vérifier?
Merci d'avance pour vos réponses :)
6 réponses
-
PS: j'obtiens un [: g: integer expression expected ou encore le unary operator expected ...
-
if élémentTapéAuClavier != [0-9]
action
else action
Nan? -
redirection='0' echo -e "Tapez ${rougefonce}0${neutre} pour entrer un lien ou ${jaune}1${neutre} pour traiter les liens du fichier \"link\"" read redirection while [ $redirection =! "[0-1]" ] #Vérification si le choix est correct do echo -e "Entrez ${rougefonce}0${neutre} ou ${jaune}1${neutre}!" read redirection done
Toujours le même problème : /
Même avec =! '[0-1]' si on tape une lettre ca ne marche pas -
essaye avec :
redirection=0 echo -e "Tapez ${rougefonce}0${neutre} pour entrer un lien ou ${jaune}1${neutre} pour traiter les liens du fichier \"link\"" read redirection while [ $redirection =! [0-1] ] #Vérification si le choix est correct do echo -e "Entrez ${rougefonce}0${neutre} ou ${jaune}1${neutre}!" read redirection done -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
$ cat foo.sh #! /bin/bash #set -xv while true do read -p "Tapez 0 ou 1 : " reponse if [[ ${reponse} != [01] ]] then echo "Pas bon." continue else echo "C'est bon." break fi done $ ./foo.sh Tapez 0 ou 1 : a Pas bon. Tapez 0 ou 1 : l Pas bon. Tapez 0 ou 1 : 5 Pas bon. Tapez 0 ou 1 : B Pas bon. Tapez 0 ou 1 : 1 C'est bon. $