从 shell 调用 python 并捕获输出

Call python from shell and capture output

我在shell写了一个程序。在这个 shell 脚本中,我调用了一个 python 脚本。那工作正常。 我希望我的 python 脚本 return 输出到 shell 脚本。 可能吗? (我在 google 上没有得到任何这样的方式)。 如果可能的话,你能告诉我怎么做吗?

test.sh

#!/bin/bash
python call_py.py

和python脚本(call_py.py

#!/usr/bin/python
if some_check:
    "return working"
else:
    "return not working"

如何从 python return 赶上 shell?

使用 $(...) 将命令的标准输出捕获为字符串。

output=$(./script.py)
echo "output was '$output'"

if [[ $output == foobar ]]; then
    do-something
else
    do-something-else
fi

要在变量中获取命令的输出,请使用进程替换:

var=$( cmd )

例如

var=$( ls $HOME )

var=$( python myscript.py)

$()(几乎)完全等同于使用反引号,但反引号语法已弃用,首选 $()。

如果您的意图是 return 字符串 'working' 或 'not working' 并在 shell 脚本中使用该值来确定 python 脚本成功,改变你的计划。使用 return 值要好得多。例如,在 python 中你 'return 0' 或 'return 1'(0 表示成功,1 表示失败),然后 shell 脚本就是:

if python call_py.py; then
  echo success
else
  echo failure
fi