我想要做的是,如果一次传递两个特定参数,那么脚本将退出并执行HELP函数。
while getopts ":H:D:S:h:" arg; do
case "${arg}" in
H) HOUR=${OPTARG};;
D) DAY=${OPTARG};;
h) HELP;;
\?) #unrecognized option - show help
HELP;;
因此,如果出现H和D的脚本,我想终止脚本运行并要求用户再次键入它。
显然我可以使用类似的东西:
if [[ -z "$HOUR" || -z "$DAY" ]]
then
HELP
但是想知道是否有更好的选择来做那样的事情。干杯!
答案 0 :(得分:2)
case
并未对互斥选项提供任何明确支持。我建议在case $arg of
-H) if [[ -n $DAY ]]; then
printf '-D already detected\n'
exit 1
else
HOUR=$OPTARG
fi
;;
-D) if [[ -n $HOUR ]]; then
printf '-H already detected\n'
exit 1
else
DAY=$OPTARG
fi
;;
-h) HELP
;;
*) HELP
;;
esac
声明中删除它:
{{1}}