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 01/10/2009, à 09: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, à 09:51)

Hors ligne

#2 Le 01/10/2009, à 11: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, à 12: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, à 09: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, à 09: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, à 09:43)

Hors ligne

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

yanick_cangaeld

Re : [Résolu]code de comparaison

Merci beaucoup wink

Hors ligne

Haut de page ↑