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
" "$*"
- 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.
- 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).
- 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).