Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Réservez vos DVD et clé USB Ubuntu-fr (premières livraisons mi-mai)

Si vous avez des soucis pour rester connecté, déconnectez vous et reconnectez vous depuis ce lien en cochant le case
Me connecter automatiquement lors de mes prochaines visites.

M.A.J. en cours du forum possibilité de bug, nous faisons le maximum pour les résoudre au plus vite

#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