在较大的Bash脚本中,我具有以下Bash代码段:
if [ $COMMAND -le 1 ]; then
test $COMMAND -eq 0 && echo 1>&2 -e "\n${COLORED_ERROR} No command selected.${ANSI_NOCOLOR}"
echo ""
echo "Synopsis:"
echo " Script to simulate '$ModuleName' module testbenches with Riviera-PRO."
echo ""
echo "..."
test $COMMAND -eq 0 && exit 1 || exit 0
fi
```
重点是test $COMMAND -eq 0 && exit 1 || exit 0
编辑:$COMMAND
的类型是整数。
是否有更好的方法来有条件地计算退出代码?
我在一些谈论Bash算术的网站上发现了一个c ? a : b
运算符,但我无法工作:
exit $(($COMMAND -eq 0 ? 1 : 0
错误消息:
./ tools / GitLab-CI / Riviera-PRO.run.sh:第111行:1 -eq 0? 1:0:表达式中的语法错误(错误令牌为“ 0?1:0”)
请注意,$COMMAND
使用多个整数值:
答案 0 :(得分:3)
仅说出有关如何更正三元运算符的用法-您需要在算术上下文中使用==
而不是-eq
:
retval=1
exit $(( (retval == 0) ? 1 : 0 ))
也就是说,如果只想在另一个命令失败的情况下以成功的状态退出,那就很简单:
! somecommand # run somecommand, and set $? to 0 only if it exited with an error
exit # use $? as our own exit status