A voir également:
- Tester une variable numérique
- Télévision numérique - Guide
- Flash drive tester - Télécharger - Divers Utilitaires
- Télévision numérique terrestre - Accueil - TV & Vidéo
- Tester son pc - Guide
- Pavé numérique bloqué - Guide
7 réponses
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
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
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]$
;-))