Test simple
Résolu
moreje
-
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'essaye un script bash ou je recupere et veux tester un argument optenu par getopts
mon probleme, c'est que si je mets '17' comme argument dans ma commande mon code me sort:
une idée sur ce que je fais mal?
a terme, je voudrais pouvoir entrer une array de nombres en argument : '17 5 12 25'
Merci!
j'essaye un script bash ou je recupere et veux tester un argument optenu par getopts
MYVAR=$OPTARG
echo ${MYVAR}
if [[ "$MYVAR" == [:digit:] ]] then
echo $MYVAR is number
exit 1
else echo $MYVAR is not number
fi
mon probleme, c'est que si je mets '17' comme argument dans ma commande mon code me sort:
17 is not number
une idée sur ce que je fais mal?
a terme, je voudrais pouvoir entrer une array de nombres en argument : '17 5 12 25'
Merci!
4 réponses
-
Salut,
Pour une classe définie, il faut des doubles crochets "[[:digit:]]".
Ensuite si le then est sur la même ligne que le "if" il faut le séparer par un point virgule :if [[ "$MYVAR" == [[:digit:]] ]] ; then ...
-
Merci...
malheureusement, malgré l'ajout des doubles ]
j'ai toujours
17 is not number-
-
-
voilà:
#!/bin/bash while getopts ":l:" opt; do case $opt in l) echo "-l actif: les labels selectionnés sont: $OPTARG" >&2 MYVAR=$OPTARG echo ${MYVAR} if [[ "$MYVAR" == [[:digit:]] ]] ; then echo "-l: $MYVAR is number" exit 1 else echo "${MYVAR} is not number" fi ;; \?) echo "option invalide: -$OPTARG" >&2 exit 1 ;; :) echo "Option $OPTARG necessite un argument" >&2 exit 1 ;; esac done
et la commande:
moncode -l '17' fichieratraiter -
Voir message #4
-
super, merci c'est presque bon!
c'est quoi la signification de ce ~ ?
Je dis presque bon, car si le nom de mon fichier a traiter contient un chiffre, et que je lance une commande avec une erreur (oubli de l'argument)
moncode -l fichieratraiter1
le test passe car il trouve un chiffre dans le nom de fichier.
sais tu comment tester pour que l'argument ne contienne QUE des chiffres?
Merci!!
-
-
salut,
sans regex :[[ $v == +([0-9]) ]] && echo "is a number" || echo "is NOT a number"
-
merci!
existe il la construction inverse à
=~ ^[[:digit:]]*$
pour que le test soit valide quand il n'y a PAS que des chiffres?
merci