我目前有一个使用短标记-M
,-m
和-b
的脚本。我只想使用一个参数,所以我只是在匹配标志上将其中断。我想更改它,以便在使用多个标志的情况下返回非零代码,并且我想支持长标志(--major
,--minor
,--bug
)。如何修改我现在使用的代码块来实现这一目标?
while getopts ":Mmb" increment; do
case "${increment}" in
M)
result=1
break
;;
m)
result=2
break
;;
b)
result=3
break
;;
esac
done
也许:
has_M=0
has_m=0
has_b=0
while getopts ":Mmb" increment; do
case "${increment}" in
M) has_M=1 ;;
m) has_m=1 ;;
b) has_b=1 ;;
esac
done
shift $((OPTIND - 1))
if (( has_M + has_m + has_b > 1 )); then
echo "only one of -M -m -b is allowed" >&2
exit 1
fi