Usar getopts en Bash Script
- Opciones de análisis con argumentos en Bash
getopts - Opciones de análisis sin argumentos en Bash
getopts
Este tutorial muestra el uso de getopts en scripts bash analizando opciones con argumentos y analizando opciones sin argumentos.
Opciones de análisis con argumentos en Bash getopts
Las letras n y c tienen : delante de ellas. Esto significa que esperamos que se proporcione un argumento siempre que se utilice la opción -n o -c. La variable opt, contiene el valor de la opción actual que ha sido analizada por getopts.
while getopts n:c: opt do case "${opt}" in n) name=${OPTARG};; c) country=${OPTARG} esac done echo "I am $name"; echo "And I live in $country"; Cuando ejecutamos el script, la opción -n proporciona John como argumento, mientras que la opción -c proporciona Britain como argumento.
bash flags.sh -n John -c Britain Producción :
I am John And I live in Britain Opciones de análisis sin argumentos en Bash getopts
Esto utilizará un script bash simple que imprime el script usage cuando se pasa la opción -h, e imprime el contenido de la carpeta cuando se utiliza la opción -p con una ruta especificada a la carpeta como argumento.
El primer : significa que getopts no informará ningún error. En cambio, manejaremos los errores nosotros mismos. La letra p tiene un : delante, mientras que la letra h no. Esto significa que siempre que se usa la opción -p, esperamos un argumento, pero la opción -h se puede usar sin un argumento.
Cuando se pasa la opción -h, invoca la función usage. La opción -p asigna el argumento pasado a la variable path, que luego se pasa a la función list como argumento. El * especifica la acción que se debe realizar siempre que se pase una opción que no sea -h o -p.
#!/bin/bash function usage { printf "Usage:\n" printf " -h Display this help message.\n" printf " -p <folder path> List contents of specified folder.\n" exit 0 } function list { ls -l $1 } while getopts :p:h opt; do case ${opt} in h) usage ;; p) path=${OPTARG} list $path #echo $folder ;; *) printf "Invalid Option: $1.\n" usage ;; esac done Ejecute el script con la opción -h:
./getopts.sh -h Usage: -h Display this help message. -p <folder path> List contents of specified folder. Ejecute el script con la opción -p:
./getopts.sh -p /home/fumba/example total 0 -rw-r--r-- 1 fumba fumba 0 Nov 1 21:43 file1.txt -rw-r--r-- 1 fumba fumba 0 Nov 1 21:43 file2.txt drwxr-xr-x 1 fumba fumba 4096 Nov 1 21:43 pictures Ejecute el script con una opción no válida, -k:
./getopts.sh -k Invalid Option: -k. Usage: -h Display this help message. -p <folder path> List contents of specified folder. 