2010-05-09 8 views
1

Comment passer une variable Python au shell Bash? Il devrait fonctionner comme ceci: foo="./RetVar.py 42"Comment transmettre une variable Python à Bash?

Remplacer les guillemets doubles avec `s

J'ai essayé l'impression et sys.exiting le résultat, mais en vain. Comment pourrais-je accomplir mon objectif?

Répondre

8
foo="$(scriptthatprintssomething)" 

C'est tout. print. Ou sys.stdout.write(). Ou semblable. Si le script n'est pas exécutable, vous devez spécifier explicitement l'interpréteur.

foo="$(python scriptthatprintssomething.py)" 
0

Votre forme souhaitée fonctionne très bien:

$ cat >Retvar.py 
#!/usr/bin/python 
import sys 
print sys.argv[1] 
$ chmod +x RetVar.py 
$ foo=`./RetVar.py 42` 
$ echo $foo 
42 
$ 

donc probablement la façon dont vous aviez l'impression essayé étaient incorrects. (Ceci est assez indépendant de l'utilisation des backquotes de style plus ancien, ou des constructions plus récentes telles que $()). Si vous avez toujours ce problème, pouvez-vous nous montrer l'exemple minimal de code Python qui le reproduit, pour nous aider à vous aider?

0

Dans bash à la fois `` cmd \ et $ (cmd) seront remplacés par la sortie de la commande. Cela vous permet d'assigner la sortie d'un programme à une variable comme

foo=`some command` 

ou

foo=$(some command) 

Normalement, vous envelopper cela dans des guillemets doubles afin que vous puissiez avoir des espaces dans votre sortie. Il doit s'agir de guillemets doubles car les données à l'intérieur des guillemets simples ne seront pas exécutées.

Questions connexes