我的小型 POSIX shell 脚本通常不接受任何参数,所以这对我来说有点新鲜……
最小的代码片段可能看起来像这样:
# default for hotkey variable on top of script is set
hotkey=Print
...
while getopts ':hk:' option; do
case "$option" in
k) # override default hotkey variable with supplied arg.
hotkey=$OPTARG
shift 2
;;
h) # self-explanatory I assume, prints usage, and exits script with code 0
print_usage_and_exit 0
;;
*) # inspects unspecified arguments, prints usage, and exits script with code 1
dump_args "$@"
print_usage_and_exit 1
;;
esac
done
...
我仍然不清楚的是,在这种特殊情况下,notoriety known 命令是否有用:
shift $(( OPTIND - 1 ))
谢谢您的指导
shift $(( OPTIND - 1 ))
删除由 解析的参数getopts
。例如,如果您执行./yourscript.sh -k x y z
,则会使$1
代替y
。-k
如果您在循环后不使用$@
、$1
等getopts
,则您不需要该行。