| Programación en shell: Administración de linux: Una guía básica | ||
|---|---|---|
| Anterior | Programas de shell | Siguiente |
En los sistema Unix es habitual poner las opciones para ejecutar una orden siguiendo unas normas:
Las opciones están formadas por una letra precedida de un guión.
Cada opción puede llevar uno o más argumentos.
Las opciones sin argumentos pueden agruparse después de un único guión
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:
Cuando a una opción le acompaña un argumento, getopts lo sitúa en la variable OPTARG.
Si en la línea de mandatos aparece una opción no válida entonces asignará "?" a variable.
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.