如何将Python变量传递给Bash shell?它应该像这样工作:
foo="./RetVar.py 42"
用's
替换双引号我已尝试打印和sys.exiting结果,但无济于事。我将如何实现目标?
答案 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代码的最小示例,以帮助我们为您提供帮助?