Pages : 1
#1 Le 11/07/2013, à 14:59
- koorosh
probleme script shell
Bonjour !
il y a 1 semaine, je me suis mis à apprendre sérieusement le shell
pour débuter mon premier script, j'ai créé un script qui me permettais de déterminer si je suis majeur ou pas en entrant mon age.
mais ce dernier marche pas lors de la première condition !
Quelqu'un peut m’éclaircir s'il vous plait
#!/bin/bash
read -p 'entrer votre age:' age
echo "votre age est: $age"
if [ $age < 18 ]
then
echo "tu est mineur"
elif [ $age > 18 ]
then
echo "tu es majeur"
else
echo "je connais pas ton age?"
fi
edit modo : merci d'utiliser les balises [ code ]
Dernière modification par nesthib (Le 11/07/2013, à 15:54)
"Les paroles peuvent être plus tranchantes qu'un sabre affûté" écrit par Omar Khayam poète perse.
Hors ligne
#2 Le 11/07/2013, à 15:09
- pingouinux
Re : probleme script shell
Bonjour,
if [ "$age" -lt 18 ]
.........
elif [ "$age" -gt 18 ]
.........
Prévoir aussi le cas où l'âge est égal à 18.
Ajouté :
Ou bien
if [[ "$age" -lt 18 ]]
.........
elif [[ "$age" -gt 18 ]]
.........
Dernière modification par pingouinux (Le 12/07/2013, à 16:53)
En ligne
#3 Le 11/07/2013, à 16:08
- tiramiseb
Re : probleme script shell
Salut,
Tu peux en savoir plus en lisant la manpage de test :
man test
(qui correspond au raccourci "[")
ou alors la manpage de bash, plus ardue :
man bash
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#4 Le 11/07/2013, à 16:16
- koorosh
Re : probleme script shell
Merci beaucoup du soutient cela a marché
"Les paroles peuvent être plus tranchantes qu'un sabre affûté" écrit par Omar Khayam poète perse.
Hors ligne
#5 Le 11/07/2013, à 20:51
- sputnick
Re : probleme script shell
Quitte à faire du bash, autant utiliser la syntaxe ad-hoc :
if ((age <18 )); then
.........
elif (( age > 18 ))
.........
ce qui est bien plus intuitif selon moi.
Hors ligne
#6 Le 12/07/2013, à 14:38
- koorosh
Re : probleme script shell
ba en faisant de cette manière pourtant d'apres les doc cela devai fonctionner non ?
if [ "$choix" -ge 16 ]
...................elif [ "$choix" -ge 14 ]
.....................
"Les paroles peuvent être plus tranchantes qu'un sabre affûté" écrit par Omar Khayam poète perse.
Hors ligne
#7 Le 12/07/2013, à 14:40
- nesthib
Re : probleme script shell
Oui, les deux fonctionnent, la suggestion de sputnick est juste plus simple à lire (mais pas rétrocompatible avec sh !).
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#8 Le 12/07/2013, à 14:49
- koorosh
Re : probleme script shell
enfaite ca marche pas ! =/
#!/bin/bash
read -p 'Entrer votre Note:' $choix
if (( $choix >= "16" ));
then
echo "Très bien"elif (( $choix >= "14" ));
then
echo "Bien"elif (( $choix >= "12" ));
then
echo "Assez Bien"elif (( $choix >= "10" ));
then
echo "Moyen"
else
echo "Votre note est trop faible!"fi
j'ai fais comme vous me le conseiller mais cela donne rien Oo
"Les paroles peuvent être plus tranchantes qu'un sabre affûté" écrit par Omar Khayam poète perse.
Hors ligne
#9 Le 12/07/2013, à 14:53
- tiramiseb
Re : probleme script shell
Dans la ligne "read", il ne faut pas mettre le "$" devant "choix"
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#10 Le 12/07/2013, à 14:58
- koorosh
Re : probleme script shell
Ah sayait il marche enfin !
ALORS OUI effectivement j'arrive mieux avec comme a dit sputnick avec les parenthese
C'était le $ qui foutait la grouille bon ba avec une bonne serie d'exercice cela va entrer
En tout cas merci beaucoup à vous tous de votre soutient cela m'a fait beaucoup plaizir
"Les paroles peuvent être plus tranchantes qu'un sabre affûté" écrit par Omar Khayam poète perse.
Hors ligne
#11 Le 12/07/2013, à 15:15
- sputnick
Re : probleme script shell
A retenir absolument :
- Déclaration de variable : jamais de $
- Utilisation du contenu de la variable : toujours le $
Pour le dernier point, exception faire pour justement l’arithmétique ou le $ n'est pas obligatoire
Dernière modification par sputnick (Le 12/07/2013, à 15:34)
Hors ligne
#12 Le 12/07/2013, à 15:21
- Watael
Re : probleme script shell
Utilisation du contenu de la variable : toujours le $
et toujours entre guillemets.
Entre crochets ([, [[), les opérateurs < et > effectuent une comparaison lexicale, pas arithmétique!
Pour une comparaison arithmétique il faut utiliser les opérateurs -ne, -eq, -gt, etc.
eval, c'est mal.
Hors ligne
#13 Le 12/07/2013, à 15:26
- sputnick
Re : probleme script shell
Pour une comparaison arithmétique il faut utiliser les opérateurs -ne, -eq, -gt, etc.
Non, pas avec la forme
(( ))
, voit le lien que j'ai fournis plus haut
Hors ligne
#14 Le 12/07/2013, à 15:31
- Watael
Re : probleme script shell
Entre crochets ([, [[),
!
eval, c'est mal.
Hors ligne
Pages : 1