Contenu | Rechercher | Menus

Annonce

Les adresses laposte.net ne permettent pas de recevoir nos emails. Vous êtes invité à changer d'adresse dans vos paramètres de compte à votre prochaine connexion.

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 11/07/2013, à 13: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, à 14: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, à 14: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, à 15:53)

En ligne

#3 Le 11/07/2013, à 15: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 XXe siècle
Domotego : boutique dédiée à la domotique DIY - https://www.domotego.com
Consultant informatique indépendant - Geek et tout plein d'autres choses

Hors ligne

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

koorosh

Re : probleme script shell

Merci beaucoup du soutient cela a marché smile


"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, à 19: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

Hors ligne

#6 Le 12/07/2013, à 13: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, à 13: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ᴉsdn

Hors ligne

#8 Le 12/07/2013, à 13: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, à 13: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 XXe siècle
Domotego : boutique dédiée à la domotique DIY - https://www.domotego.com
Consultant informatique indépendant - Geek et tout plein d'autres choses

Hors ligne

#10 Le 12/07/2013, à 13: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


"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, à 14: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, à 14:34)

Hors ligne

#12 Le 12/07/2013, à 14: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, à 14: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

Hors ligne

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

Watael

Re : probleme script shell

Watael a écrit :

Entre crochets ([, [[),

!


eval, c'est mal.

Hors ligne