Shell
raidouane_1986
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonsoire,
Svp j'ai un problème pour tester si un nombre (que vous lisez à partir de l’entrée standard) est un numérique sous linux.jai tester ce code la :
# !/bin/bash
echo "donner un nombre svp"
read i
if ($i < 048 -a $i > 057)
then
echo "le $i n'est pas un numérique"
else
echo "$i est un numérique"
fi
Mais le terminale affiche toujours ce que je tapé est un numérique :
redouane-pardus redouane # chmod u+x ex2_2
redouane-pardus redouane # ./ex2_2
donner un nombre svp
h
./ex2_2: line 4: 048: Aucun fichier ou dossier de ce type
h est un numerique
Svp qlq me guider et merci en avance
Svp j'ai un problème pour tester si un nombre (que vous lisez à partir de l’entrée standard) est un numérique sous linux.jai tester ce code la :
# !/bin/bash
echo "donner un nombre svp"
read i
if ($i < 048 -a $i > 057)
then
echo "le $i n'est pas un numérique"
else
echo "$i est un numérique"
fi
Mais le terminale affiche toujours ce que je tapé est un numérique :
redouane-pardus redouane # chmod u+x ex2_2
redouane-pardus redouane # ./ex2_2
donner un nombre svp
h
./ex2_2: line 4: 048: Aucun fichier ou dossier de ce type
h est un numerique
Svp qlq me guider et merci en avance
A voir également:
- Shell
- Classic shell - Télécharger - Personnalisation
- Ssh secure shell download - Télécharger - Divers Web & Internet
- Shell startup windows 10 - Guide
- Shell infrastructure host c'est quoi - Guide
- Shell do while ✓ - Forum Shell
4 réponses
bonjour,
merci pour votre reponse,mais vous voulez me donnez le commentaire de ses 2 lignes de ce programme pour bien comprendre .
#!/bin/sh
# script_let.sh
var=$1
if let $var 2>/dev/null
then
echo "$var numérique"
else
echo "$var non numérique"
fi
les lignes sont :
# script_let.sh !!!
et
let $var 2>/dev/null !!!!
est vraiment mercii bcp.merci en avance
merci pour votre reponse,mais vous voulez me donnez le commentaire de ses 2 lignes de ce programme pour bien comprendre .
#!/bin/sh
# script_let.sh
var=$1
if let $var 2>/dev/null
then
echo "$var numérique"
else
echo "$var non numérique"
fi
les lignes sont :
# script_let.sh !!!
et
let $var 2>/dev/null !!!!
est vraiment mercii bcp.merci en avance
Salut,
2>/dev/null permet de ne pas afficher les messages d'erreur à l'écran (STDERR - sortie erreur)
Par erreur tu peux par exemple tester si 2a est numérique ou pas
En ce cas shell envoie un message d'erreur (voir en gras) sur STDERR
Cette erreur n'est pas affichée si on utilise 2>/dev/null
2>/dev/null permet de ne pas afficher les messages d'erreur à l'écran (STDERR - sortie erreur)
Par erreur tu peux par exemple tester si 2a est numérique ou pas
En ce cas shell envoie un message d'erreur (voir en gras) sur STDERR
lami20j@debian:~/trash$ cat ccm.sh #!/bin/sh var=$1 if let $var then echo "$var numérique" else echo "$var non numérique" fi lami20j@debian:~/trash$ sh ccm.sh 2 2 numérique lami20j@debian:~/trash$ sh ccm.sh aa aa non numérique lami20j@debian:~/trash$ sh ccm.sh 2a ccm.sh: line 4: let: 2a: value too great for base (error token is "2a") 2a non numérique
Cette erreur n'est pas affichée si on utilise 2>/dev/null
lami20j@debian:~/trash$ cat ccm.sh #!/bin/sh var=$1 if let $var 2>/dev/null then echo "$var numérique" else echo "$var non numérique" fi lami20j@debian:~/trash$ sh ccm.sh 2 2 numérique lami20j@debian:~/trash$ sh ccm.sh a a non numérique lami20j@debian:~/trash$ sh ccm.sh 2a 2a non numérique
Re-
# script_let.sh
Un dièse (#) en début de ligne signifie que la ligne est un commentaire et quelle ne sera pas interprétée par le shell.
Dans ce cas présent c'est une façon de présenter le script (son nom)
let $var 2>/dev/null
La commande "let" déclare une variable de type "entier" et de ce fait renvoie un code retour égal à "0" (vrai) si c'est le cas et un code retour égal à 1 (faux) dans le cas contraire, ce que vérifie le "if...then...else".
Le "2>/dev/null" n'est là que pour envoyer d'éventuels messages d'erreurs dans les oubliettes plutôt que sur la sortie standard (l'écran).
# script_let.sh
Un dièse (#) en début de ligne signifie que la ligne est un commentaire et quelle ne sera pas interprétée par le shell.
Dans ce cas présent c'est une façon de présenter le script (son nom)
let $var 2>/dev/null
La commande "let" déclare une variable de type "entier" et de ce fait renvoie un code retour égal à "0" (vrai) si c'est le cas et un code retour égal à 1 (faux) dans le cas contraire, ce que vérifie le "if...then...else".
Le "2>/dev/null" n'est là que pour envoyer d'éventuels messages d'erreurs dans les oubliettes plutôt que sur la sortie standard (l'écran).