Bash:比较两个函数的退出代码



有没有一种优雅的方法来比较 bash 中两个函数的退出代码?例如

b ()
{
    local r=$(rand -M 2 -s $(( $(date +%s) + $1 )) );
    echo "b$1=$r";
    return $r;
} # just random boolean    
b1 () { b 1; return $?; } # some boolean function
b2 () { b 2; return $?; } # another boolean function ( another seed )

我想使用这样的东西

if b1 == b2 ; then echo 'then'; else echo 'else'; fi

但坚持这种"非异或"实现

if ! b1 && ! b2 || ( b1 && b2 ) ; then echo 'then'; else echo 'else'; fi

更一般地说,是否可以在算术上比较两个函数的退出代码并在 if 语句中使用该比较?

要比较 b1b2 的退出代码:

b1; code1=$?
b2; code2=$?
[ "$code1" -eq "$code2" ] && echo "exit codes are equal"

在壳牌中,像b1 == b2这样的陈述不能独立存在。 他们需要成为test命令的一部分。 test命令通常写为 [...] 。此外,在 shell 中,=(或,如果支持,==)用于字符串比较。 -eq用于数值比较。

相关内容

  • 没有找到相关文章

最新更新