Siempre que al momento de desarrollar un bash script me veo en la necesidad de capturar argumentos(flags) getopts es mi opción
El siguiente es un ejemplo de captura y validación de argumentos o flags usando getopts
#!/bin/sh
##Leer y procesar argumentos
while getopts ":a:p:d: vh" opt
do
case $opt in
v ) echo "Mostrar version" ;;
h ) echo "Mostrar ayuda" ;;
a ) echo "Opcion -a ha sido capturada"
VARIABLE_A=$OPTARG ;;
p ) echo "Opcion -p ha sido capturada"
VARIABLE_P=$OPTARG ;;
d ) echo "Opcion -d ha sido capturada"
VARIABLE_D=$OPTARG ;;
\? ) echo "Opcion invalida -$OPTARG"
exit 1 ;;
: ) echo "Opcion -$OPTARG requiere un argumento"
exit 1 ;;
esac
done
shift $((OPTIND-1))
##Mostrar ayuda si un caracter no deseado es introducido##
if [ -n "$1" ]; then
echo "Mostrar ayuda"
fi
Explicación
- Las opciones seguidas de dos puntos ( : ) requieren de un argumento. Ejemplo:
tu_script -p abc123 - Cuando una opción requiere de un argumento
getoptsguarda el argumento en la variableOPTARG.VARIABLE_A=$OPTARGguarda el valor seguido de la opción-aen la variableVARIABLE_Apara uso y manipulación posterior. - Si una opción no esperada es introducida
getoptsdevuelve“?” - Si una opción espera un argumento y el argumento no es introducido
getoptsdevuelve“:" shift $((OPTIND-1))re inicia el valor deOPTIND, la ultima funciónifvalida si algún carácter que no sea opción o argumento es introducido y muestra la ayuda.
Deja tus comentarios y/o sugerencias

Leave a Reply