buen tutorial: https://wiki.bash-hackers.org/howto/getopts_tutorial
getopts OPTSTRING VARNAME [ARGS…]h: comprueba la opción -h sin parámetros. Da error en opciones no soportadash:: comprueba la opción -h con parámetros. Da error en opciones no soportadasabc: comprueba las opciones -a, -b, -c. Da error en opciones no soportadas:abc: comprueba las opciones -a, -b, -c. NO da error en opciones no soportadas: al principio de la cadena de OPTSTRING silencia opciones no soportadas: detrás de una opción hace que espere parámetro\? : es usado para las opciones no válidas: : es usado para las opciones que requieren parámetros pero no los llevana|b|c: procesa en la misma instrucción las 3 opciones (si así lo necesiamos)h|* : el * se usa como comodín para opciones que no se han definido (sin sentido con el uso de ?)/via: https://stackoverflow.com/questions/16483119/an-example-of-how-to-use-getopts-in-bash
#!/bin/bash usage() { echo "Usage: $0 [-s <45|90>] [-p <string>]" 1>&2; exit 1; } while getopts ":s:p:" o; do case "${o}" in s) s=${OPTARG} ((s == 45 || s == 90)) || usage ;; p) p=${OPTARG} ;; *) usage ;; esac done shift $((OPTIND-1)) if [ -z "${s}" ] || [ -z "${p}" ]; then usage fi echo "s = ${s}" echo "p = ${p}"
#!/bin/bash while getopts ":a:" opt; do case $opt in a) echo "-a was triggered, Parameter: $OPTARG" >&2 ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; :) echo "Option -$OPTARG requires an argument." >&2 exit 1 ;; esac done