[SHELL SH/BASH] Passage du caractère * en parametre

Passage du caractère * en parametre [SHELL SH/BASH] - Shell/Batch - Programmation

Marsh Posté le 11-06-2007 à 18:21:14    

Bonjour tout le monde,  
 
N'étant pas très doué en script linux bash, j'ai tenté de faire plein de chose pour passer les caractères .* en parametre de mon script, sans succès, .* est toujours interprété...
Alors, en résumé, j'ai  
$ ./monScript.sh -f .* à exécuter...
à l'interieur de monScript.sh, j'ai donc du code, puis le lancement de mon appli
 
monAppli $*, qui doit donc être  
monAppli -f .*
 
J'ai donc essayé de faire en ligne de commande :
$ ./monScript.sh -f .*
$ ./monScript.sh -f ".*"
$ ./monScript.sh -f '.*'
$ ./monScript.sh -f ".\*"
$ ./monScript.sh -f '.\*'
$ ./monScript.sh -f "'.*'"
$ ./monScript.sh -f "qr.*"
$ ./monScript.sh -f \.\*
$ ./monScript.sh -f "\.\*"
$ ./monScript.sh -f ./*
$ ./monScript.sh -f ".\\*" etc etc etc...
 
ce que $* me retourne est l'interprétation du caractère spécial *, et non la string *
 
Y a t'il un moyen d'obtenir le caractère * non interprété (oui j'ai donc bien essayé *, \* et "\*", mais rien à faire, * est toujours interprété avant d'etre passé à mon script...) ??
 
Ah oui j'ai aussi essayé de combiner ces "" et ces \ avec un peu la même chose a l'interieur de mon script, par exemple $ ./monScript.sh -f "./*" d'un coté et "$2", "\$2", ... à l'interieur du script, mais non, sans succès...
 
Si quelqu'un à une idée...
 
ma version de sh/bash est :  
 
GNU bash, version 3.00.15(1)-release (i386-redhat-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.
 
sur une Red Hat ES 4.2
 
Merci pour votre aide !
 
Cheloute
 

Reply

Marsh Posté le 11-06-2007 à 18:21:14   

Reply

Marsh Posté le 11-06-2007 à 20:46:06    

Le problème n'est pas dans l'invocation de monscript.sh, il est dans la façon dont monscript.sh lance monAppli. Il faut utiliser "$@" (avec les double quotes, c'est important) :

monAppli "$@"


Ensuite tu appelles monscript.sh de l'une des façons suivantes :

./monScript.sh -f .\*
./monScript.sh -f '.*'
./monScript.sh -f ".*"
./monScript.sh -f .'*'
./monScript.sh -f ."*"


Enfin bref tu comprends, l'important c'est que le shell n'interprète pas le *.

Reply

Marsh Posté le 12-06-2007 à 10:22:03    

Eh ben merci beaucoup, c'est pile poil ce qu'il me fallait :)

Reply

Marsh Posté le 15-06-2007 à 18:12:56    

cheloute a écrit :

Eh ben merci beaucoup, c'est pile poil ce qu'il me fallait :)


http://fr.lang.free.fr/cours/Shell_v2.0.pdf => Chapitre VI => Neutralisation des méta caractères


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed