我需要使用 Bash shell 检查从包装脚本中启动的两个子脚本的返回码。
如果任一下标失败,它们将产生一个负整数作为返回码。如果脚本有小错误,它将产生一个正整数。我执行完全成功,返回码将为 0。
我想根据结果创建一个变量以具有另一个变量的内容。目前我正在使用一个又大又丑的if
elif
构造,但感觉我应该使用一个case
语句。
这是我当前的代码:
if [[ "$sumcreate_retval" -lt "0" ]] && [[ "$movesum_retval" -lt "0" ]]
then
script_retcode="$both_warn_err"
elif [[ "$sumcreate_retval" -gt "0" ]] && [[ "$movesum_retval" -gt "0" ]]
then
script_retcode="$both_crit_err"
elif [[ "$sumcreate_retval" -gt "0" ]] && [[ "$movesum_retval" -lt "0" ]]
then
script_retcode="$createwarn_movecrit_err"
elif [[ "$sumcreate_retval" -gt "0" ]] && [[ "$movesum_retval" -eq "0" ]]
then
script_retcode="$createwarn_err"
elif [[ "$sumcreate_retval" -lt "0" ]] && [[ "$movesum_retval" -gt "0" ]]
then
script_retcode="$createcrit_movewarn_err"
elif [[ "$sumcreate_retval" -lt "0" ]] && [[ "$movesum_retval" -eq "0" ]]
then
script_retcode="$createcrit_err"
elif [[ "$sumcreate_retval" -eq "0" ]] && [[ "$movesum_retval" -gt "0" ]]
then
script_retcode="$movewarn_err"
elif [[ "$sumcreate_retval" -eq "0" ]] && [[ "$movesum_retval" -lt "0" ]]
then
script_retcode="$movecrit_err"
else
script_retcode="$success_return"
fi
我应该如何重组这个?
注意:如果这个问题更适合另一个 SE 站点,请告诉我。
像这样的东西应该可以解决问题。我觉得这样看起来不错:
这就像@imjoris 的答案,但我打破了数学。它是三进制的,其中 0 为 0,1 为正数,2 默认为负数。我重新排列了您的列表以使其更清晰-希望这不会让您失望:-)
顺便说一句,StackOverflow 可能是解决此类复杂脚本问题的更好站点。