O comando shell e quaisquer argumentos para esse comando aparecem como variáveis de shell numeradas : $0 tem o valor de string do próprio comando, algo como script , ./script , /home/user/bin/script como queiras. Todos os argumentos aparecem como "$1" , "$2" , "$3" e assim por diante. A contagem de argumentos está na variável do shell "$#" .
Formas comuns de lidar com isso envolvem comandos shell getopts e shift . getopts é muito parecido com a função da biblioteca C getopt() . shift move o valor de $2 para $1 , $3 para $2 e assim por diante; $# é diminuído. O código acaba vendo o valor de "$1" , fazendo coisas usando case … esac para decidir uma ação e, em seguida, fazendo um shift para mover $1 para o próximo argumento. Ele só precisa examinar $1 e talvez $# .