2010-05-09 170 views
1

我该如何将一个Python变量传递给Bash shell?它应该是这样的: foo="./RetVar.py 42"如何将Python变量传递给Bash?

用'替换双引号小号

我曾尝试印刷和sys.exiting的结果,但无济于事。我将如何实现我的目标?

回答

8
foo="$(scriptthatprintssomething)" 

就是这样。 print。或者sys.stdout.write()。或者类似的。如果脚本不可执行,那么您需要明确指定解释器。

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

你想要的形式工作得很好:

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

所以想必你曾试图打印的方式是不正确的。 (这与使用旧式backquotes或更新式的构造(如$())相当独立)。如果你仍然有这个问题,你能向我们展示一下Python代码的最简单的例子来重现它,帮助我们帮助你吗?

0

在bash中``cmd \和$(cmd)将被命令的输出替换。这可以让你的程序的输出分配给一个变量像

foo=`some command` 

foo=$(some command) 

通常你用双引号把这个包,所以你可以在你的输出有空格。它必须是双引号,因为单引号内的东西不会被执行。