Python 2.7 从shell调用python并捕获输出
我已经用shell编写了一个程序。在这个shell脚本中,我调用了一个python脚本。这很好。 我希望python脚本将输出返回到shell脚本。 可能吗?(我在谷歌上找不到这样的方法)。 如果可能的话,你能告诉我怎么做吗Python 2.7 从shell调用python并捕获输出,python-2.7,shell,function-call,Python 2.7,Shell,Function Call,我已经用shell编写了一个程序。在这个shell脚本中,我调用了一个python脚本。这很好。 我希望python脚本将输出返回到shell脚本。 可能吗?(我在谷歌上找不到这样的方法)。 如果可能的话,你能告诉我怎么做吗 test.sh #!/bin/bash python call_py.py 和python脚本(call_py.py) 如何从python返回并在shell中捕获?使用$(…)将命令的stdout捕获为字符串 output=$(./script.py) echo "out
test.sh
#!/bin/bash
python call_py.py
和python脚本(call_py.py
)
如何从python返回并在shell中捕获?使用$(…)
将命令的stdout捕获为字符串
output=$(./script.py)
echo "output was '$output'"
if [[ $output == foobar ]]; then
do-something
else
do-something-else
fi
要获取变量中命令的输出,请使用进程替换:
var=$( cmd )
乙二醇
或
$()几乎完全等同于使用backticks,但backticks语法已被弃用,而$()是首选
如果您打算返回字符串“working”或“notworking”,并在shell脚本中使用该值来确定python脚本是否成功,请更改计划。最好使用返回值。例如,在python中,您“返回0”或“返回1”(0表示成功,1表示失败),然后shell脚本就是:
if python call_py.py; then
echo success
else
echo failure
fi
在python中,我们可以使用sys.exit(0)来表示成功,使用sys.exit(1)来表示失败。这个简单的解决方案即使在修改后也不会工作(python-u some_pyunit_tests.py 2>&1)@alexh?您的示例将python脚本编写的数据分配给左侧变量的文件描述符1或2(例如stdout和stderr)。这在什么方面不起作用?我不知道,这让我发疯。我最好的猜测是pyunit中有一些黑魔法,它产生了一个单独的进程,该进程以某种方式将输出从调用它的子shell外部重定向到终端。屏幕上会显示内容。我似乎无法将其捕获到文件或变量中。
var=$( ls $HOME )
var=$( python myscript.py)
if python call_py.py; then
echo success
else
echo failure
fi