如何将Python变量传递给Bash?

时间:2010-05-09 07:20:18

标签: python linux bash unix

如何将Python变量传递给Bash shell?它应该像这样工作: foo="./RetVar.py 42"

用's

替换双引号

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

3 个答案:

答案 0 :(得分:9)

foo="$(scriptthatprintssomething)"

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

foo="$(python scriptthatprintssomething.py)"

答案 1 :(得分:1)

在bash中,`cmd \和$(cmd)将被命令的输出替换。这允许您将程序的输出分配给变量,如

foo=`some command`

foo=$(some command)

通常用双引号括起来,这样你的输出就可以有空格。它必须是双引号,因为单引号内的内容不会被执行。

答案 2 :(得分:0)

您想要的表格效果很好:

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

所以大概是你尝试打印的方式不正确。 (这完全独立于使用旧式反引号或更新式的结构,如$())。如果您仍然遇到此问题,是否可以向我们展示再现它的Python代码的最小示例,以帮助我们为您提供帮助?