Test de variable

Résolu/Fermé
alech - 3 avril 2015 à 12:29
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 7 avril 2015 à 16:29
Bonjour à tous,
je me tourne vers vous une fois encore. Dans un script je récupéré plusieurs variable avec la fonction read
"read -p 'entre un nombre:' varA"

et je voudrais pouvoir vérifier si la variable est bien un entier ou décimal. J'ai essayé avec
["$(echo $varA | grep "^[[:digit]]*$")"]
ou
[ $var -eq 0 ] 2> /dev/null
if [ $? -eq 0 -o $? -eq 1 ]
ou encore
if let $var 2>/dev/null

rien ne fonctionne j'ai toujours des erreurs :s

merci d'avance
A voir également:

1 réponse

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
3 avril 2015 à 13:14
1
Salut, j'ai déjà lu ce FAQ c'est d'ailleurs de là que vient ce que j'ai essayé. Mais dans mon cas ça ne marche pas
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > alech
3 avril 2015 à 14:30
$ var="2.5"

$ let $var
bash: let: 2.5 : erreur de syntaxe : opérateur arithmétique non valable (le symbole erroné est ".5")

$ echo $?
1

$ var="2"

$ let $var

$ echo $?
0
0
désolé mais je n'ai pas tout compris et ça ne fonctionne pas
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > alech
3 avril 2015 à 14:43
On déclare une variable :
var="2.5"

On l'initialise en tant qu'entier via la commande let :
let $var


Dans la FAQ le résultat de la sortie d'erreur (2) est redirigé vers
/dev/null
pour ne pas avoir le résultat à l'écran, moi je l'ai laissé, d'où le message d'erreur "bash: let: 2.5 : erreur de syntaxe".

Puis je teste le code retour :
echo $?
qui renvoie "1" donc faux ;-\

Idem pour la suite mais avec un entier comme variable et tout se passe bien ;-)
0
lorsque j'utilise une commande avec /dev/nu]] j'ai systèmatiquement une erreure
0