#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
Hors ligne