按照我提供的示例,我正在读取另一个脚本的结果来确定行动方案。
isOK=$(somepythonscript.py --someParametersHere)
if [ "$isOK" = true ]; then
echo "isOK=$isOK"
当我回显 isOK ( )的值时,我会看到isOK=true
和isOK=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