Passer un paramètre avec des espaces [RESOLU] - Shell/Batch - Programmation
Marsh Posté le 05-01-2006 à 06:44:29
Ca dépend de ce que tu veux faire.
Personnellement quand j'ai un paramètre susceptible de contenir des espaces, je le place en dernier et dans mon script, je concatène tout à coup de "shift".
Marsh Posté le 05-01-2006 à 10:26:54
Elmoricq a écrit : Ca dépend de ce que tu veux faire. |
Je ne comprends pas tres bien : shift c'est bien pour modifier les paramètres positionnels du script, non?
Ici j'aimerai envoyer un parametre avec ou sans espace espace à la fonction filmedia
je m'explique :
Code :
|
ce script fonctionne car je quote le param2 donc il envoie le parametre avec les espaces
le probleme c'est que je fais passer le tout comme parametre à une autre fonction (numerote)
Code :
|
j'utilise donc deja les guillemets
dès lors comment puis je faire pour lui transmettre le parametre param2 avec les espaces??
Marsh Posté le 05-01-2006 à 11:12:44
shift effectue un "décalage vers la gauche" des paramètres : $9 devient $8, $8 devient $7, ..., $2 devient $1 et le contenu $1 est perdu.
Dans ton cas particulier, ça te permet de lire $1, puis de lire $2 suivi de shift, jusqu'à ce que $2 soit vide :
|
Marsh Posté le 05-01-2006 à 11:33:00
Tu m'as mal compris.
Je ne veux pas lire tous ce qui a dans param2
je veux que param2 contienne une chaine avec des espaces.
Cette variable va servir dans un grep pour trouver une ligne contenant la chaine en question
je sais pas si je suis clair
je répéte que ça, ça fonctionne tres bien
Code :
|
mon probleme vient uniquement du fait que je passe le tout comme parametre d'une autre fonction
Code :
|
et la je ne peux plus quoter param2, donc quand il contient des espaces ça ne fonctionne plus
Marsh Posté le 05-01-2006 à 11:41:36
yoshi42 a écrit : Tu m'as mal compris. |
Il semblerait.
yoshi42 a écrit : Je répéte que ça, ça fonctionne tres bien
|
chezmoiçamarche :
$ cat test.ksh |
Je ne comprends pas où se situe ton problème.
Marsh Posté le 05-01-2006 à 11:51:10
Construction de la variable et transmssion à la fonction
Code :
|
La fonction
Code :
|
voici 2 sorties:
sortie1 quand pas d'espace dans p2
Code :
|
sortie2 quand espace dans p2
Code :
|
-->Quand je met un espace je n'arrive pas à récupérer le parametre 2 dans la fonction.
Marsh Posté le 05-01-2006 à 11:59:08
Je pense que c'est dans "numerote" qu'il y a une mauvaise gestion des paramètres.
Marsh Posté le 05-01-2006 à 12:09:01
Elmoricq a écrit : Je pense que c'est dans "numerote" qu'il y a une mauvaise gestion des paramètres. |
pourtant elle est plutot basique cette fonction
Code :
|
Marsh Posté le 05-01-2006 à 12:20:51
Ok, j'ai pu isoler ton problème.
Soit dans filmedia() tu appliques la solution du shift comme je te disais au début, soit tu fais :
numerote "filmedia $param1 '$param2'" |
Et :
eval $1 | while read line |
Marsh Posté le 06-01-2006 à 03:43:34
merci encore une fois pour ton aide
Marsh Posté le 05-01-2006 à 01:55:53
Ca fait un moment que je galere avec ce probleme
quand il y a pas d'espace dans param2 la variable est correctement transmis à la fonction
mais quand je mets un espace dans la variable param2 ça ne fonctionne plus
j'ai tout essayé
rien ne fonctionne
Auriez vous des idées?
Merci d'avance
Message édité par yoshi42 le 06-01-2006 à 03:45:08