Bonjour à tous!
J'ai un (léger) soucis, pas si léger que ça si j'en viens à faire appel à vous.
Je fait appel dans un shell à une sorte de fonction :
\chemin\fonction argument1 argument 2 ...
L'un de ces argument est sous la forme : 'A - B', soit :
\chemin\fonction arg1 arg2 'A - B' arg4 ...
Lorsque je passe 'A - B' en argument tel quel, pas de soucis du côté de "fonction" dans mon shell
Mais ça serait trop simple : j'ai besoin d'aller lire cet agument 'A - B' dans un fichier, ailleurs...
L'export de ce qui est contenu dans le fichier pour utilisation dans mon shell ne pose pas de pb lorsque les arguments sont différents d'un format 'A - B'.
Par exemple :
le fichier contient :
A
B
'A - B'
Mon malheur vient du fait qu'au niveau du shell, je vais disposer suite à l'export de ce qui est dans le fichier d'une variable "ENTREE=A" ou "ENTREE=B" ou "ENTREE='A - B'"
donc bien entendu me concernant et dans le but de renseigner convenablement les arguments de "fonction", je procède à la récupération de ce qui va derrière le =
en gros :
je dispose de $i dont l'echo renvoie
ENTREE=A
ce à quoi j'effectue RESP=${$i##*=}
si je fait echo $RESP alors on obtient A
Cool
Mais si j'applique la même démarche à $i+2, à savoir ici dans notre cas 'A - B', l'écho final de $RESP donne 'A - B' (et non plus ENTREE='A - B' pour ceux qui suivent, vu mes explications un peu foireuses)
Et là intervient mon problème : lorsque j'utilise $RESP en tant qu'argument dans ma fonction, les "paramètres" tels que A, ou B, pas de soucis, mais arrivé à 'A - B' j'obtiens une erreur :
export: `-': not a valid identifier
Pourtant si echo $RESP renvoie 'A - B' et que du coup au lieu de taper
fonction arg1 arg2 'A - B' .. je tape
fonction arg1 arg2 $RESP ...
pourquoi ai-je ce problème?
Quelle est la différence d'interprétation qui est faite de le taper "directement" ou de lui passer par l'intermédiaire d'une espèce de variable...???
(car j'ai testé avec '...', avec "...", avec ' " ..." ', avec ' ' ... ' ' etc etc, pas mal de combinaisons différentes en fait, voire toutes?)
Etant débutant en shell, j'aimerais comprendre (et c'est en lisant divers tutos que j'ai effectué mes tests avec les différentes combinaisons des quotes)
Merci à tous ceux qui prendront la peine d'arrive à cette phrase! et merci d'avance à ceux que cela inspirera
Partager