Contenu | Rechercher | Menus

Annonce

Bientôt Ubuntu 16.04 LTS
Réservez vos DVD et clé USB Ubuntu-fr dès maintenant

En cas de déconnexions intempestives, merci de vous connecter à partir de cette page en cochant la case « Me connecter automatiquement lors de mes prochaines visites ».

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

yanick_cangaeld
Membre

[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
Membre

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
Membre

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
Membre

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
Membre

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
Membre

Re : [Résolu]code de comparaison

Merci beaucoup wink

Hors ligne