Você geralmente usa getopts
como:
while getopts...; do
# process options
...
done
shift "$((OPTIND - 1))"
printf 'First non-option argument: "%s"\n' "$1"
O shift
acima descarta todos os argumentos da opção (incluindo o% arrastado --
, se houver) processado por getopts
.