2011-05-26 1 views
0

si j'utilise un $ symbole dans les arguments, python optparse n'est pas capable de l'analyser correctement. Il ignore simplement le symbole et le caractère suivant. Si je donne un \ avant $ alors cela fonctionne bien. Mais je ne veux pas donner un \. S'il vous plaît, aidez-moi à surmonter cette situation.

Son se passe uniquement sous Linux; Windows fonctionne correctement.

Merci de votre aide à l'avance.

+1

S h o u s s. –

+0

Le shell Unix n'autorisera pas $ 'dans les arguments. Veuillez fournir le code et la ligne de commande qui ne seront pas analysés. –

Répondre

4

Je pense que cela arrive parce que Linux utilise $ pour identifier les variables shell. Donc, si vous voulez utiliser ce symbole dans vos arguments, votre seule chance est de passer '\ $', qui ne sera pas remplacé par le shell invoquant. Windows utilise% variablename% pour identifier ce type de variables, c'est pourquoi vous ne rencontrez pas ce genre de "problème" sur cette O.S.

+0

OP peut vérifier que ce n'est pas son script ou l'implémentation de python Linux qui est en cause en invoquant son script du script _another_ python avec le module 'subprocess'. Ensuite, l'expansion du shell ne sera pas effectuée sur les arguments. Comme ceci: 'subprocess.Popen (["/chemin/vers/script.py "," $ arg1 "," arg $ 2 "," etc. "]]. Communiquez()' –

+0

Eh bien .. Pas votre chance _only_. Vous pouvez également envelopper chaque argument dans des guillemets simples. De cette façon, vous pouvez avoir de l'espace, un saut de ligne et presque tout le reste dans votre argument. Par exemple: echo '$ hey, $ you' – Gurgeh

+0

En relisant votre réponse, il semble que vous enveloppiez votre argument dans des guillemets simples ET que vous utilisiez une barre oblique inverse. Vous devriez seulement utiliser l'un d'entre eux. – Gurgeh

Questions connexes