【发布时间】:2018-11-04 22:32:28
【问题描述】:
例如,我有一个命令 commandA,想在 commandA 执行后获取退出代码。 CommandA 预计会失败,所以我们应该得到的退出代码是 1。
如果我在终端中键入命令commandA;echo $?,屏幕上会显示一个 1。然而,当我用 python 做这件事时,事情就出错了。
我尝试用os.system(commandA)或subprocess.call(commandA.split())调用commandA,然后调用os.popen('echo $?').read(),结果为0。
os.popen('commandA;echo $?').read() 给了我一个正确的结果,但是 commandA 的过程没有显示在屏幕上,这是我不希望发生的。
【问题讨论】:
-
您是否在命令行内联运行 Python 脚本? shell 解释器会扩展 $?早,在将字符串传递给 Python 之前。
$ python -c "import os; os.system('echo test; false; echo $?')" test 0$ python -c "import os; os.system('echo test; false; echo \$?')" test 1
标签: python subprocess os.system