Meus pequenos scripts de shell POSIX geralmente não aceitam argumentos, então isso é meio novo para mim ...
O snippet mínimo provavelmente ficaria assim:
# 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
...
O que não está claro para mim é se, neste caso específico, há alguma utilidade para o comando conhecido por notoriedade:
shift $(( OPTIND - 1 ))
Obrigado por qualquer direção
shift $(( OPTIND - 1 ))
remove os argumentos que foram analisados porgetopts
. Por exemplo, se você fizer isso./yourscript.sh -k x y z
, isso fará com$1
que sejay
em vez de-k
. Se você não estiver usando$@
,$1
, etc. após ogetopts
loop, não precisará dessa linha para nada.