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". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 01/10/2009, à 08:40

yanick_cangaeld

[Résolu]code de comparaison

Bonjour,

Je n'arrive pas à écrire un code qui accepterait indifféremment 0,1 ou 2 arguments et les classerait dans un ordre croissant comme dans l'exemple suivant :

$ classe 26 13
13 est inférieur a 26
$ classe 11
il manque un argument,entrer votre nombre :89
11 est inferieur a 89
$ classe
il manque deux arguments .
Entrer le premier argument :987
Entrer le deuxieme argument :23
23 est inferieur a 987

J'ai fait plusieurs essais de code mais je n'y arrive pas

Le dernier code que j'ai essayé :

#!/bin/sh
case $# in
 0) echo "il manque deux arguments"
   echo "entrer le premier argument :"
   read nb1
   echo "entrer le deuxième argument : "
   read nb2
   ;; 
 1)echo "il manque un argument,entrez votre nombre : "
   read nb2
   ;;
 *)echo "trop d\'arguments veuillez réessayer"
   ;;   
esac

if [ $1 -lt $2 ]; then
   echo "$1 inférieur à $2" 
elif [ $1 -gt $2 ]; then
   echo "$2 inférieur à $1"
else
   "echo $1 egal $2"
fi

Pourriez vous m'aider ou me donner un code simple pour que j'arrive à le comprendre ?

Dernière modification par yanick_cangaeld (Le 02/10/2009, à 08:51)

Hors ligne

#2 Le 01/10/2009, à 10:43

Hawkmoon

Re : [Résolu]code de comparaison

Il te manque :
Dans 1) :
nb1=$1
Dans 2)
nb1=$1
nb2=$2


Tagazok à toi, mon frère !

Hors ligne

#3 Le 01/10/2009, à 11:32

yanick_cangaeld

Re : [Résolu]code de comparaison

#!/bin/sh
case $# in
0) echo "il manque deux arguments"
   echo "entrer le premier argument :"
   read nb1
   echo "entrer le deuxième argument : "
   read nb2
   ;;
1)nb1=$1
   echo "il manque un argument,entrez votre nombre : "
   read nb2
   ;;
2)nb1=$1
   nb2=$2
   ;;
*)echo "trop d\'arguments veuillez réessayer"
   ;;   
esac

if [ $1 -lt $2 ]; then
   echo "$1 inférieur à $2"
elif [ $1 -gt $2 ]; then
   echo "$2 inférieur à $1"
else
   "echo $1 egal $2"
fi


ça marche beaucoup mieux comme ça merci

Par contre si je mets trop d'arguments le programme continue à s'exécuter jusqu'à la première condition du if . Comment l'en empêcher ? J'aurais oublié un break dans le case ?

Hors ligne

#4 Le 02/10/2009, à 08:06

yanick_cangaeld

Re : [Résolu]code de comparaison

J'ai mis exit aprèsla condition "trop d'arguments" et ça fonctionne

Par contre quand le programme s'exécute ,J'aimerais que les arguments soit placés directement derrière la demande .
exemple :

echo "entrer le premier argument :"
   read nb1

J'aimerais qu'à l'exécution ça m'affiche :

Entrer le premier argument : 87

Il faudrait que je puisse taper le nombre juste derrière la phrase .
Comment dois je faire ?

Hors ligne

#5 Le 02/10/2009, à 08:41

Coolgeek

Re : [Résolu]code de comparaison

remplace echo "entrer le premier argument :" par echo -n "entrer le premier argument :"

et remplace dans tes if $1 par $nb1 et $2 par $nb2

Dernière modification par Coolgeek (Le 02/10/2009, à 08:43)

Hors ligne

#6 Le 02/10/2009, à 08:50

yanick_cangaeld

Re : [Résolu]code de comparaison

Merci beaucoup wink

Hors ligne

Haut de page ↑