getopts: Gestionando parámetros

Se pueden gestionar de varias formas los parámetros de un script en Bash pero el que nos da más flexibilidad y control es con getopts. Lo mejor para explicar su uso es con un ejemplo y explicar el ejemplo:

while getopts 'ab:' OPCION
do
    case $OPCION in
        a)  echo "lo que queramos hacer con parametro a"
            ;;
        b)  CAMPO_DE_B="$OPTARG"
            echo "lo que queramos hacer con parametro b y su campo"
            ;;
        ?)  echo "Mostrar ayuda"
            exit 2
            ;;
    esac
done
shift $(($OPTIND - 1))
printf "El resto de parámetros son: %s\n" "$*"
  1. Tenemos que parámetros vamos a procesar y de que tipo en la línea "getopts 'ab:' OPCION" (el while solo repite el proceso hasta que no haya más parámetros a procesar).
    • 'ab:' indica que parámetros reconoce el script en este caso "a" y "b" pero como "b" tiene ":" detrás indica que lleva un valor o campo (ejemplo -b 12).
    • OPCION es la variable donde guarda la letra a procesar en el bucle while.
  2. Tenemos un "case" para cada una de los parámetros y una más "?" para cualquier otro parámetro o cuando no se han puesto parámetros. Cada opción del "case" es un parámetro en que haremos lo que necesitemos. Si un parámetro tiene un valor o campo, este valor lo contendrá la variable de Bash "$OPTARG" (ver parámetro b).
  3. Y por último tenemos la línea "shift $(($OPTIND - 1))" después del "while" que lo que hace es limpiar los parámetros procesados y dejar el resto en la posición correcta ($1).

Retro

Lugares

Redes

Sistemas

Varios