Para expandir a resposta de @ choroba, aqui está um exemplo de como usar getopts
:
# parse the flag options (and their arguments)
while getopts c:d: OPT; do
case "$OPT" in
d)
DIR="$OPTARG" ;;
c)
COMMAND="$OPTARG" ;;
[?])
# got invalid option
echo "Usage: $0 [-d directory] [-c command]" >&2
exit 1 ;;
esac
done
# get rid of the just-finished flag arguments
shift $(($OPTIND-1))
Observe que, depois de desativar os argumentos de sinalizador, todos os argumentos "regulares" permanecerão. Então, nesse ponto, você poderia lidar com eles (por exemplo, ... for arg in "$@"; do ...
) ou se o script não os pegasse apenas se você obtivesse algum ( if [ $# -gt 0 ]; then echo "Usage ...
).