如何在一行中测试 Python 脚本的响应?

如何在一行中测试 Python 脚本的响应?

按照我提供的示例,我正在读取另一个脚本的结果来确定行动方案。

isOK=$(somepythonscript.py --someParametersHere)

if [ "$isOK" = true ]; then

echo "isOK=$isOK"当我回显 isOK ( )的值时,我会看到isOK=trueisOK=false,具体取决于我传递的参数。

是否可以将其合并为一个声明来实现这一效果?

if [ $(somepythonscript.py) = true]; then

我一直在阅读有关 shell 脚本的内容,我的理解是这= true不是对布尔值的测试,而是人们认为它像布尔值一样工作的误解效果。如果这是安全的,我也可以打赌。但如果有更好的方法来测试另一个 Python 脚本的响应,我对此持开放态度。请注意,我无法更改其他 Python 脚本。

答案1

是的,你可以这样做。该构造$(command)是将 的输出command视为变量的一种方式,因此它本质上相当于var=$(command)and then using $var。因此,如果您不需要保留输出,则不需要变量,这就足够了:

if [ "$(command)" = "true" ]; then
  # do your thing
fi

请记住,就 shell 而言true, andfalse只是字符串(bash在您的情况下)。与Python 中的True和不同,它们没有任何特殊含义。False

最后,这种情况更常见的习惯用法是使用命令的退出状态,0成功时为退出状态,失败时为非 0。因此,如果您的 Python 脚本编写得很好并且在失败时以非 0 状态退出,那么只需执行以下操作就足够了:

if somepythonscript.py --someParametersHere
then
  echo "The script worked!"
else
  echo "the script failed!"
fi

相关内容