J'ai un script qui me permet de calculer des gains boursiers en fonctions de plusieurs paramètres.
À un moment donné, l'utilisateur doit rentrer une valeur (chiffres). Mais j'aimerais que le script soit restrictif et ne permette que la saisie de chiffres (et rien d'autre, en plus de mes conditions déjà présentes).
while [[ $ACHAT -le "0" || -z $ACHAT ]]; do
clear
read -p "Veuillez rentrer le cours d'achat : " ACHAT
done
Comme on peut le voir, j'ai mis une condition "inférieur ou égale à zero" et "vide". Est-ce qu'il existe une condition "aucun mot" ou "seulement des charactères alphanumériques" ?
Merci beaucoup !
Dernière modification par aminnairi le mer. 23 déc. 2015, 21:19, modifié 1 fois.
Arch Linux x86_64 UEFI
7,3 Gio RAM
Intel® Core™ i5-4200U CPU @ 1.60GHz × 4
Intel® Haswell Mobile + NVIDIA GeForce 840M 2 Gio vRAM
KDE Plasma + SDDM
Pas mal de méthodes pour ça...
Au plus simple, tu peux tester la chaîne saisie par rapport à une expression de type [:digit:], ou contre une expression régulière plus ou moins complexe (tester (0-9) ou mieux a priori: exclure tout pattern comprenant (a-Z), tabulations et autres, etc.), selon si tu autorises ou non les points ou virgules...
«The following statement is not true. The previous statement is true.»
tu peux tester if ((variable)); then ...; else ...; fi. Ça plante avec violence si "variable" n'est pas un nombre entier
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière) toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable popho.be : Kimsufi KS-3, FreeBSD 11.0 Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Tout d'abord merci pour vos réponses ! Ça fonctionne plutôt bien avec (($ACHAT)). Au moins ça me sauve quelques kilo-octets sur le fichier. Je connaissais pas du tout je savais juste qu'on pouvait faire varier les option à l'intérieur..
Pas moyen d'empêcher plusieurs mots sinon ? Parce que taper archlinux ça fonctionne bien (comprendre mon while refait un tour) mais quand je tape j'aime archlinux ben il passe à la suite héhé... Bon après j'en demande sûrement beaucoup trop au script mais ça peut être sympa à faire !
tu ferais aussi bien de remplacer $ACHAT par "$achat" (les variables toutes en majuscules sont réservées à l'usage global, comme "$TERM" ou "$SSH_SESSION") et les guillemets pour éviter le word-splitting.
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière) toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable popho.be : Kimsufi KS-3, FreeBSD 11.0 Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !