从 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
我在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