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

charline159 65 Messages postés lundi 14 août 2017Date d'inscription 28 octobre 2017 Dernière intervention - 16 août 2017 à 16:57 - Dernière réponse : charline159 65 Messages postés lundi 14 août 2017Date d'inscription 28 octobre 2017 Dernière intervention
- 16 août 2017 à 19:15
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!


Afficher la suite 
65Messages postés lundi 14 août 2017Date d'inscription 28 octobre 2017 Dernière intervention

6 réponses

Répondre au sujet
zipe31 35174 Messages postés dimanche 7 novembre 2010Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention - 16 août 2017 à 17:26
0
Utile
5
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 65 Messages postés lundi 14 août 2017Date d'inscription 28 octobre 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?
zipe31 35174 Messages postés dimanche 7 novembre 2010Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention > charline159 65 Messages postés lundi 14 août 2017Date d'inscription 28 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.
charline159 65 Messages postés lundi 14 août 2017Date d'inscription 28 octobre 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...
zipe31 35174 Messages postés dimanche 7 novembre 2010Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention > charline159 65 Messages postés lundi 14 août 2017Date d'inscription 28 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.
charline159 65 Messages postés lundi 14 août 2017Date d'inscription 28 octobre 2017 Dernière intervention - 16 août 2017 à 19:15
Je vois! Merci beaucoup pour ton aide!
Commenter la réponse de zipe31