#1 Le 27/05/2015, à 22:27
- yaba64
[RESOLU]Ignorer la casse d'un paramètre
Bonjour
J'ai trouvé qu'il était possible d'ignorer la casse sur une variable comme ceci : ${VARIABLE,,}
mais j'aimerais pouvoir ignorer la casse sur un paramètre d'un script.
par exemple sur le code tout simple suivant :
if [ $1 = "marc" ]
then
echo "Salut Marc !"
else
echo "Salut inconnu"
fi
il faudrais qu'en lançant le script avec comme paramètre marc, Marc, MaRc...
$1 soit reconnu comme marc, j'ai essayé en faisant comme pour une variable en écrivant ${$1,,} mais bien ça ne marche pas
donc si quelqu'un à la bonne solution je suis preneur
Merci beaucoup
Dernière modification par yaba64 (Le 28/05/2015, à 08:26)
Ordi : i7 3770K- CM DZ77GA 70K - Gigabyte GTX 1050ti - 16go Ram DDR3
Hors ligne
#2 Le 28/05/2015, à 02:01
- MicP
Re : [RESOLU]Ignorer la casse d'un paramètre
…J'ai trouvé qu'il était possible d'ignorer la casse sur une variable comme ceci : ${VARIABLE,,}
…
…en écrivant ${$1,,} mais bien ça ne marche pas…
Simple erreur d’inattention de ta part, car tu as ajouté un caractère $ de trop : Au lieu de ${$1,,} écrit plutôt ${1,,} dans ton script.
=======
Si c'est bien comme ça que c'était présenté et que tu ne l'a pas ré-interprété ou/et mal recopié,
j'ajouterai qu'il est important de bien nommer les choses : ${VARIABLE,,} aurait été mieux formulé de la façon suivante : ${nomDeVariable,,}
Ce qui aurait sans doute permis d'éviter cette confusion.
=======
NOTE : N'oublie pas de mettre un shebang en première ligne de ton script. ( Voir aussi : interpréteur de commandes )
Dernière modification par MicP (Le 28/05/2015, à 04:23)
Hors ligne
#3 Le 28/05/2015, à 07:43
- yaba64
Re : [RESOLU]Ignorer la casse d'un paramètre
non non je ne me suis pas trompé, alors on va dire que je me suis mal expliqué !
$1 représente mon premier paramètre ça je me peux pas le changer, donc je ne peux pas enlever le $
et quand j'ai écrit ${VAR,,,} c'est comme ça que je l'ai trouvé dans la doc donc si tu veux pour que tout le monde comprenne mieux on peut l'appeler ${NomDeVariable,,} mais bon chacun sa façon d'appeler une variable ça me choque pas moi de la voir sous une autre forme sachant que j'avais déja modifié en VARIABLE et je vois que tu as compris de quoi il s'agissait.
Pour en revenir au problème c'est pourquoi j'ai remplacé VARIABLE ou NomDeVariable ou VAR ou LeMotQueTuVEux pas mon paramètre $1 mais c'est quelque chose qui ne marche pas d'où ma question
Ordi : i7 3770K- CM DZ77GA 70K - Gigabyte GTX 1050ti - 16go Ram DDR3
Hors ligne
#4 Le 28/05/2015, à 07:56
- credenhill
Re : [RESOLU]Ignorer la casse d'un paramètre
hello
mettre $1 en maj. ou minuscule pour le test
$ set -- aaa
$ echo ${1^^}
AAA
$ set -- BbB
$ echo ${1,,}
bbb
if [ ${1,,} = "marc" ] ...
Dernière modification par credenhill (Le 28/05/2015, à 07:57)
Hors ligne
#5 Le 28/05/2015, à 08:03
- pingouinux
Re : [RESOLU]Ignorer la casse d'un paramètre
mais c'est quelque chose qui ne marche pas
Le mieux serait de montrer exactement ce que tu as fait et qui ne marche pas.
Sinon, tu peux faire ceci (comme te l'a indiqué MicP), avec utilisation d'une variable intermédiaire ou non
#!/bin/bash
ma_variable="$1"
echo "${1,,}"
echo "${ma_variable,,}"
$ ./le_script couCOU
coucou
coucou
Dernière modification par pingouinux (Le 28/05/2015, à 08:27)
Hors ligne
#6 Le 28/05/2015, à 08:26
- yaba64
Re : [RESOLU]Ignorer la casse d'un paramètre
AAAh cool merci j'ai pigé !!!
oui je comprends vite mais faut m'expliquer longtemps lol
merci les ubuntutiens
Ordi : i7 3770K- CM DZ77GA 70K - Gigabyte GTX 1050ti - 16go Ram DDR3
Hors ligne
#7 Le 28/05/2015, à 08:29
- MicP
Re : [RESOLU]Ignorer la casse d'un paramètre
#!/bin/bash
if [ "${1,,}" = "marc" ]
then
echo "Salut Marc !"
else
echo "Salut inconnu"
fi
Hors ligne
#8 Le 28/05/2015, à 09:08
- yaba64
Re : [RESOLU]Ignorer la casse d'un paramètre
Oui voilà c'est c'est ce que j'ai repris !
Pour info ce que j'avais pas pigé (comme d'hab ) c'est que le paramètre c'est juste une variable en fait et donc juste 1 ou 2 ou...
autant pour moi
Ordi : i7 3770K- CM DZ77GA 70K - Gigabyte GTX 1050ti - 16go Ram DDR3
Hors ligne