Script shell - besoin d'aide

Résolu/Fermé
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 - 16 août 2017 à 16:57
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 - 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!


A voir également:

1 réponse

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
16 août 2017 à 17:26
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 lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 1
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?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022
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.
0
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 1
Modifié le 16 août 2017 à 19:00
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022
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.
0
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 1
16 août 2017 à 19:15
Je vois! Merci beaucoup pour ton aide!
0