我正在编写一个带有N个选项的Bash脚本。称它们为-1,-2,..., - N。以下适用于选项的使用:
- 可以提供任意数量的选项,从0到N.
- 没有选择采取任何论点
- 可以按任何顺序提供选项
我以一种相当标准的方式处理这些:
while [[ $# -gt 0 ]]
do
OPTION="$1"
case $OPTION in
-1)
process_option_1
shift
;;
-2)
process_option_2
shift
;;
...
-N)
process_option_N
shift
;;
*)
echo "Unknown option $OPTION. Aborting..."
exit 1
esac
done
目标1
我想添加两个额外的选项:
- -all这意味着-1,-2,... -N的全部
- -q这表示“安静”模式,即不向显示器打印任何内容
如果出现-all,则它必须单独出现或仅出现-q。
-q可以与“ -all ”或“-1 -2 ... -N”形式的调用一起使用。
目标2
我想强制执行,不能重复任何选项。
题
我很难扩展我的逻辑以实现我的目标。
我想问社区:我怎样才能实现这些目标?
请注意,目标2是次要的。如果某人有目标1的解决方案而不是目标2的解决方案,请务必提供!
编辑补充:我可以强制逻辑; 我的意思是说,我正在寻找一个干净,优雅的解决方案,不涉及对选项的不必要的重复循环,提供自动将新的个别选项的处理包含到-all等...