Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#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 smile

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 hmm !

Quelqu'un peut m’éclaircir s'il vous plait smile

#!/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)

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)

Hors 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-Munch - administrateur Linux depuis le XXème siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#4 Le 11/07/2013, à 16:16

koorosh

Re : probleme script shell

Merci beaucoup du soutient cela a marché smile

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.

See http://mywiki.wooledge.org/ArithmeticExpression


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

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 ]
       .....................

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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdnGMT-4

En 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

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-Munch - administrateur Linux depuis le XXème siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

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 smile

C'était le $ qui foutait la grouille smile bon ba avec une bonne serie d'exercice cela va entrer wink

En tout cas merci beaucoup à vous tous de votre soutient cela m'a fait beaucoup plaizir smile wink

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)


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#12 Le 12/07/2013, à 15:21

Watael

Re : probleme script shell

sputnick a écrit :

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

Watael a écrit :

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


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#14 Le 12/07/2013, à 15:31

Watael

Re : probleme script shell

Watael a écrit :

Entre crochets ([, [[),

!


eval, c'est mal.

Hors ligne

Haut de page ↑