【发布时间】:2014-04-16 19:16:43
【问题描述】:
我正在尝试编写一个 python 脚本,它返回一个值,然后我可以将其传递给 bash 脚本。问题是我想在 bash 中返回一个单一值,但我想在此过程中将一些东西打印到终端。
这是一个示例脚本。我们称之为return5.py:
#! /usr/bin/env python
print "hi"
sys.stdout.write(str(5))
我想要的是当我从命令行运行它时以这种方式执行它:
~:five=`./return5.py`
hi
~:echo $five
5
但我得到的是:
~:five=`./return5.py`
~:echo $five
hi 5
换句话说,我不知道如何让 python 脚本打印并清除标准输出,然后将其分配给我想要的特定值。
【问题讨论】:
-
我很困惑——如果不是标准输出,你认为终端是什么?如果您只需要它们在单独的行上,可以使用
import sys; sys.stdout.flush() -
是你要返回到 shell 的总是一个数字吗?您可以使用
sys.exit(5)并查看$?但这也是非标准行为 -
数字退出代码在任何意义上都不是“非标准行为” - 这是一个非常成熟的概念。不过,某些环境可能会限制范围(例如 0-127)。
-
@AndrewMedico,这是非标准的,因为有一个严格的约定,即 0 表示“一切都很好”,非零表示错误情况。
-
是的,我想要的是非标准的,因为 0 很好,其他的 == 哎呀