Signaler

Script shell - besoin d'aide [Résolu]

Posez votre question charline159 63Messages postés lundi 14 août 2017Date d'inscription 6 septembre 2017 Dernière intervention - Dernière réponse le 16 août 2017 à 19:15 par charline159
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!


Utile
+0
plus moins
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


charline159 63Messages postés lundi 14 août 2017Date d'inscription 6 septembre 2017 Dernière intervention - 16 août 2017 à 18:27
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?
Répondre
zipe31 35054Messages postés dimanche 7 novembre 2010Date d'inscription ContributeurStatut 16 octobre 2017 Dernière intervention - 16 août 2017 à 18:55
Ben disons que le nombre de caractères est la condition sine qua none ici, donc oui il faut la mettre en 1er.
Répondre
charline159 63Messages postés lundi 14 août 2017Date d'inscription 6 septembre 2017 Dernière intervention - 16 août 2017 à 18:59
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...
Répondre
zipe31 35054Messages postés dimanche 7 novembre 2010Date d'inscription ContributeurStatut 16 octobre 2017 Dernière intervention - 16 août 2017 à 19:07
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.
Répondre
charline159 63Messages postés lundi 14 août 2017Date d'inscription 6 septembre 2017 Dernière intervention - 16 août 2017 à 19:15
Je vois! Merci beaucoup pour ton aide!
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !