#1 Le 13/11/2012, à 05:50
- touttou
tester si une valeur est numérique dans un script shell
Bonjour tout le monde,
j'ai essayé de faire un script qui teste si une variable est numérique(est composé éventuellement d'un signe suivi de chiffres uniquement).
c'est ce que j'ai écrit:
#!/bin/bash
#fonction qui renvoie vrai quand l'argument qui lui est passé en paramètre est un nombre (positif ou négatif)
function isnum {
echo "$1" | egrep -q '^[-+]?[0-9]+$'
}
isnum
mais il m'affiche toujours
./in.bash:ligne3: Erreur de syntaxe près du symbole innatendu <<echo>>
./in.bash:ligne3:`echo "$1" | egrep -q '^[-+]?[0-9]+$''
Merci d'avance
edit modo : merci de choisir des titres explicites
Dernière modification par nesthib (Le 13/11/2012, à 08:11)
Hors ligne
#2 Le 13/11/2012, à 06:51
- Hizoka
Re : tester si une valeur est numérique dans un script shell
echo "$1" | egrep -q '^[-+]?[0-9]+$'
il existe des vérifications pour faire ça en bash...
if [[ "${1}" =~ ^[-+]?[0-9]+$ ]]
then
echo "ok"
else
echo "pas bon"
fi
ou en plus court
[[ "${1}" =~ ^[-+]?[0-9]*$ ]] && echo "ok"
et si tu as besoin de retourner une valeur : return [la valeur (0 ou 1 par exemple)]
[[ "${1}" =~ ^[-+]?[0-9]*$ ]] && return 0 || return 1
echo "${?}"
=> 0 ou 1
Et soit un peu plus precis dans le titre de ton topic afin que ce soit explicite
Dernière modification par Hizoka (Le 13/11/2012, à 06:53)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#3 Le 13/11/2012, à 06:59
- pingouinux
Re : tester si une valeur est numérique dans un script shell
Bonjour,
Ton script ne donne pas d'erreur chez moi.
Remarques :
Appeler isnum avec un paramètre
isnum "$1"
Tu peux simplifier un peu :
egrep -q '^[-+]?[0-9]+$' <<<"$1"
Hors ligne