Script shell - besoin d'aide

Résolu
charline159 Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   -  
charline159 Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour! J'ai fait ce petit script shell... et pour résumer:

- si les deux paramètres rentrés par l'utilisateur sont pareils, alors j'affiche un message pour dire qu'ils sont identiques;
- s'ils sont différents, alors le message indique qu'ils sont différents;
- si l'utilisateur a rentré un nombre de paramètres différents de deux (aucun, un seul ou plus de deux paramètres) alors le message lui indique qu'il n'a pas rentré deux paramètres.

#!/bin/bash


if [ $1 = $2 ]
then
echo "Les deux paramètres sont identiques."
elif [ $1 != $2 ]
then
echo "Les deux paramètres sont différents."
elif [ ! $# -eq 2 ]
then
echo "Vous n'avez pas rentré deux paramètres."
fi

Et donc quand j'exécute le script, la troisième condition ne marche pas, et je ne sais pas pourquoi: si je tape le script sans paramètre, alors je vais avoir un message qui m'indique "les deux paramètres sont identiques".

Est-ce que quelqu'un aurait une solution à ça svp?

Merci pour votre aide!


A voir également:

1 réponse

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

Il faut placer ta condition qui teste le nombre de paramètre en 1er !

De plus, la condition de test du nombre de paramètre doit s'écrire
[ $# -ne 2 ]
;-\

#!/bin/bash

if [ $# -ne 2 ]
then
        echo "Vous n'avez pas rentré deux paramètres." 
elif [ $1 = $2 ]
then
        echo "Les deux paramètres sont identiques."
elif [ $1 != $2 ]
then
        echo "Les deux paramètres sont différents."
fi


0
charline159 Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   1
 
Effectivement, ça marche! Merci beaucoup!

Dois-je en conclure qu'il faut toujours mettre les "cas particuliers" (si l'utilisateur n'a pas correctement indiqué ce qu'il faut) en première condition?
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430 > charline159 Messages postés 208 Date d'inscription   Statut Membre Dernière intervention  
 
Ben disons que le nombre de caractères est la condition sine qua none ici, donc oui il faut la mettre en 1er.
0
charline159 Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   1
 
Ok merci pour ta réponse !
J'ai encore une question: à présent, je souhaite qu'on m'indique si le nombre que je rentre est trop grand ou trop petit.

#!/bin/bash

if [ $# -ne 1 ]
then
echo "Veuillez rentrer un chiffre ou nombre en paramètre!"
elif [ $1 -eq 10 ]
then
echo "parfait!"
elif [ $1 -gt 10 ]
then
echo "c'est trop!"
else
echo "ce n'est pas assez!"
fi


Et donc, cette fois, comment faire pour que mon script prenne en compte plusieurs chiffres/nombres en même temps? Comme ça, si je tapais par exemple 3 nombres en même temps, il m'afficherait 3 messages d'affilées d'un coup...
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430 > charline159 Messages postés 208 Date d'inscription   Statut Membre Dernière intervention  
 
Ben disons que là il faut revoir entièrement le script, avec notamment l'introduction d'une boucle (
for i in …
), et/ou la notion de
shift
afin d'évaluer chaque paramètre.
0
charline159 Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   1
 
Je vois! Merci beaucoup pour ton aide!
0