Permet l'espace avant et après le nombre, _33 ou 33___, mais pas 3__3. et pas de lettres. 0 ou
- Obtenir la contribution de l'utilisateur jusqu'à ce que correct
# -- get input until Correct
unset get_num
while [[ ! ${get_num} =~ ^[0-9]+$ ]]; do
echo "Please enter in a number:"
read get_num
done
echo This is a number : ${get_num}
- Obtenir entrée jusqu'à ce que correcte (portée)
# -- get input until Correct (within range)
unset get_num
while [[ ! ${get_num} =~ ^[0-9]+$ ]]; do
echo "Please enter in a number within range of (1-30):"
read get_num
! [[ ${get_num} -ge 1 && ${get_num} -le 30 ]] && unset get_num
done
echo This is a number withn a range : ${get_num}
- obtenir l'entrée correcte jusqu'à ce que (portée) (manière complète regex)
« Depuis des expressions régulières traitent avec du texte plutôt que des chiffres, correspondant à un certain nombre dans une plage donnée prend un peu de soins. Vous ne pouvez simplement écrire [0-255 ] pour correspondre à un nombre entre 0 et 255. Bien qu'une regex valide, il correspond à quelque chose de complètement différent. [0-255] est une classe de caractères avec trois éléments: la plage de caractères 0-2, le caractère 5 et le caractère 5 (à nouveau). Cette classe de caractères correspond à un seul chiffre 0, 1, 2 ou 5, tout comme [0125] « ~ http://www.regular-expressions.info/numericranges.html
# -- get input until Correct (within range) (another way)
unset get_num
while [[ ! ${get_num} =~ ^([1-9]|1[0-9]|2[0-9]|30)$ ]]; do
echo "Please enter in a number within range of (1-30):"
read get_num
done
echo This is a number withn a range : ${get_num}
-. Obtenez entrée et vérifier uniquement (pas en boucle)
# -- get input, and check it only (no while loop)
unset get_num
echo "Please enter in a number:"
read get_num
if [[ ! ${get_num} =~ ^[0-9]+$ ]] ;then
echo "${get_num} isn't a number"
else
echo "${get_num} is a number"
fi
Oui qui fonctionne, merci, mais im réutiliser la même variable donc la prochaine fois qu'il vient autour d'elle a une valeur de la dernière entrée. des idées? –
Je ne comprends pas tout à fait ce que vous voulez dire. Voilà pourquoi représenterons-nous à une chaîne vide avant d'entrer dans la boucle :) –
La solution ci-dessus accepte toujours les entrées telles que '22aa', 'aa 22' ou 'a23bb'. d la fin de la chaîne: tandis que [[! ($ nombre = ~^[0-9] + $)]]; faire –