Gestionando parámetros

( desarrollo / bash )

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 cambo"
	;;
  ?)	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).
Modificado el 31 de julio de 2011
Creado el 9 de septiembre de 2010
   

Compartiendo conocimiento desde 1995 - I.M.D. I.M.D.