Google
Web dns.bdat.net
next up previous contents
Next: Evaluación de variables: eval Up: Programas de shell Previous: Terminar un programa de   Índice General

Opciones en un programa de shell: getopts

En los sistema Unix es habitual poner las opciones para ejecutar una orden siguiendo unas normas:

Para facilitar el análisis de las opciones la shell dispone de la orden getopts. La sintaxis de getopts es la siguiente:

getopts cadenaopciones variable [args ...]

En cadenaopciones se sitúan las opciones válidas del programa. Cada letra en esta cadena significa una opción válida. El carácter ":" después de una letra indica que esa opción lleva un argumento asociado o grupo de argumentos separados por una secuencia de espacios y tabuladores.

Esta orden se combina con la sentencia while para iterar por cada opción que aparezca en la línea de órdenes en la llamada al programa. En variable se almacena el valor de cada una de las opciones en las sucesivas llamadas. En la variable OPTIND se guarda el índice del siguiente argumento que se va a procesar. En cada llamada a un programa de shell esta variable se inicializa a 1.

Además:

Veamos un ejemplo:

while getopts ab:cd opcion
do
        case $opcion in
                a) echo "Opción a"
                ;;
                b) echo "Opción b con argumento OPTARG"
                ;;
                c) echo "Opción c"
                ;;
                d) echo "Opcion d"
                ?) echo "Uso: $0 -acd -b opcion "
        esac
done
shift `expr $OPTIND - 1`
echo "resto de argumentos: $*"

Observamos como hemos desplazados todos los argumentos con shift para enerlos disponibles con los parámetros posicionales y descartando las opciones previamente analizadas.


next up previous contents
Next: Evaluación de variables: eval Up: Programas de shell Previous: Terminar un programa de   Índice General
Pedro Pablo 2001-12-14