Contenu | Rechercher | Menus

Annonce

Le forum rencontre en ce moment quelques soucis de charge, il est possible qu'une erreur soit affichée quand vous postez un message, ne rechargez pas la page au risque de poster une seconde fois votre message

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

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

[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, à 09:51)

Hors ligne

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

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, à 12:32

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, à 09:06

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, à 09:41

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, à 09:43)

Hors ligne

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

Re : [Résolu]code de comparaison

Merci beaucoup wink

Hors ligne

Haut de page ↑