El comando interno getopts permite a un script analizar las opciones que le han sido pasadas como argumento.
Sintaxis
Cada llamada a getopts analiza la opción siguiente de la línea de comandos. Para verificar la validez de cada una de las opciones, hay que llamar getopts desde un bucle.
Definición de una opción
Para getopts, una opción se compone de una carácter precedido por un signo «+» o «–«.
Ejemplo
Ejecutando el script:
«-c» y «+c» son las opciones, mientras que «wordpress» es un argumento; una opción puede funcionar sola o estar asociada a un argumento.
El script gestusuario (listado arriba) permite archivar y restaurar cuentas de usuario. Estas son opciones sin argumento. Las opciones -u y -g permiten especificar la lista de usuarios y la lista de grupos a tratar. Tienen que estar seguidas de un argumento.
Llamando al script con opciones válidas
Opciones inválidas
Cuando getopts detecta una opción inválida, la variable opcion se inicializa con el carácter «?» y un mensaje de error se reflejará en la pantalla. Seguidamente las siguientes opciones se analizarán.
Gestión de errores
Si colocamos el carácter «:» en la primera posición de la lista de opciones a tratar, los errores se generarán de forma diferente en el caso de una opción inválida:
- getopts no mostrará un mensaje de error;
- la variable OPTARG se inicializará con el valor de la opción incorrecta.
Veamos el listado del código reescrito:
Ejecutamos el script con las modificaciones.
Opción válida sin argumentos
Cuando el argumento de una opción está ausente, la variable opcion se inicializa con el carácter «:» y OPTARG contiene el valor de la opción involucrada.
Ejemplo
Vemos en este caso, la estructura de control case que trata el caso del argumento ausente:
Tras añadir una nueva opción al comando case la ejecución será:
Las opciones se almacenan en los parámetros posicionales ($1, $2, …). Una vez que se han analizado, es posible deshacerse de ellos con el comando shift. Esto es interesante si quedan argumentos a tratar tras las opciones.
Ejemplo
Añadiremos las líneas a nuestro script detrás del bucle while para permitirnos retirar las opciones de la lista de argumentos (shift $((OPTIND-1))).
- Ensaya con lo aprendido en esta sección.
Debe estar conectado para enviar un comentario.