Isso pode resultar em uma lista arg vazia, ou não. Depende de quantos argumentos houve para começar e quantos argumentos relevantes getopts encontraram (e definiram em $ OPTIND). getopts ignora todos os argumentos que não começam com - e -- diz ao getopts para parar o processamento de quaisquer argumentos subsequentes como opções (por exemplo, rm -f -- -filenamebeginningwith-.txt ).
por exemplo. se você tiver 5 args -x -y -z file1 file2 , então shift 3 irá se livrar dos três primeiros argumentos, deixando apenas file1 file2 .