A voir également:
- Tester une variable numérique
- Flash drive tester - Télécharger - Divers Utilitaires
- Tester son pc - Guide
- Télévision numérique terrestre - Accueil - TV & Vidéo
- Pavé numérique bloqué - Guide
- Caractère numérique - Guide
7 réponses
zoe27
Messages postés
188
Date d'inscription
samedi 26 janvier 2008
Statut
Membre
Dernière intervention
2 février 2013
4
2 nov. 2008 à 02:17
2 nov. 2008 à 02:17
quel shel? sh, csh ou bash?
expression?expression1;expression2
de tête, mais il suffit de regarder la doc de ton shell pour le syntaxe. si expression est TRUE tu obtiens résultat expression2, autrement expression2
expression?expression1;expression2
de tête, mais il suffit de regarder la doc de ton shell pour le syntaxe. si expression est TRUE tu obtiens résultat expression2, autrement expression2
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
2 nov. 2008 à 11:06
2 nov. 2008 à 11:06
Salut,
Regarde ici
Regarde ici
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
2 nov. 2008 à 11:06
2 nov. 2008 à 11:06
Salut,
Voir dans la FAQ : Tester une variable numérique
Voir dans la FAQ : Tester une variable numérique
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
-----------------------------------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
# script_test.sh
var=$1
[ $var -eq 0 ] 2> /dev/null
if [ $? -eq 0 -o $? -eq 1 ]
then
echo "La chaîne est numérique"
fi
------------------------------------------------------------------------------------------------------------------------------------------------------------
j'ai pas compris : ce teste |$var -eq 0 ] renvoie 0 si vrai , pourquoi en a fait si la valeur renvoyer = 0 ou 1 ->chaine est numerique
quelqu'un peux m'expliquer ca
#!/bin/bash
# script_test.sh
var=$1
[ $var -eq 0 ] 2> /dev/null
if [ $? -eq 0 -o $? -eq 1 ]
then
echo "La chaîne est numérique"
fi
------------------------------------------------------------------------------------------------------------------------------------------------------------
j'ai pas compris : ce teste |$var -eq 0 ] renvoie 0 si vrai , pourquoi en a fait si la valeur renvoyer = 0 ou 1 ->chaine est numerique
quelqu'un peux m'expliquer ca
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
2 nov. 2008 à 12:07
2 nov. 2008 à 12:07
Re-
Je reconnais que ce n'est pas évident à comprendre ;-\
En fait on teste si le paramètre passé au script est égal à 0 (zéro).
Dans le cas où le paramètre est numérique (admettons qu'on passe 5 en paramètre), la condition est évaluée :
Cette condition est à nouveau évaluée dans le second test :
Par contre si on passe un caractère non numérique (A par exemple) :
Pour bien comprendre il serait plus judicieux d'écrire le script comme suit :
;-))
Je reconnais que ce n'est pas évident à comprendre ;-\
En fait on teste si le paramètre passé au script est égal à 0 (zéro).
Dans le cas où le paramètre est numérique (admettons qu'on passe 5 en paramètre), la condition est évaluée :
[tmpfs]$ ./foo.sh 5 var=$1 + var=5 [ $var -eq 0 ] 2> /dev/null + '[' 5 -eq 0 ']' if [ $? -eq 0 -o $? -eq 1 ] then echo "La chaîne est numérique" else echo "La chaîne n'est pas numérique" fi + '[' 1 -eq 0 -o 1 -eq 1 ']' + echo 'La chaîne est numérique' La chaîne est numérique [tmpfs]$Le test est faux, vu que 5 est supérieur à 0 et renvoie donc la valeur faux (1).
Cette condition est à nouveau évaluée dans le second test :
if [ 1 -eq 0 -o 1 -eq 1 ]Ici "$?" (le code retour) vaut donc "1" et rentre parfaitement dans une des deux conditions.
Par contre si on passe un caractère non numérique (A par exemple) :
[tmpfs]$ ./foo.sh A var=$1 + var=A [ $var -eq 0 ] 2> /dev/null + '[' A -eq 0 ']' if [ $? -eq 0 -o $? -eq 1 ] then echo "La chaîne est numérique" else echo "La chaîne n'est pas numérique" fi + '[' 2 -eq 0 -o 2 -eq 1 ']' + echo 'La chaîne n'\''est pas numérique' La chaîne n'est pas numérique [tmpfs]$La 1ère condition n'est pas satisfaite, et génère une erreur (non visible vu que les erreurs sont envoyées dans /dev/null) renvoyant le code retour "2". Ce code ne rentrant pas dans la seconde condition + '[' 2 -eq 0 -o 2 -eq 1 ']' le test échoue et par conséquent la variable n'est pas numérique.
Pour bien comprendre il serait plus judicieux d'écrire le script comme suit :
#!/bin/bash var=$1 [ $var -eq 0 ] 2>&1 if [ $? -eq 0 -o $? -eq 1 ] then echo "La chaîne est numérique" else echo "La chaîne n'est pas numérique" fiCe qui donnerait avec une valeur non numérique :
[tmpfs]$ ./foo.sh A ./foo.sh: line 5: [: A: integer expression expected La chaîne n'est pas numérique [tmpfs]$
;-))