Bash getopts comando incorporado

En Tipo Unix sistemas operativos, getopts es un comando incorporado del Intento cáscara. Analiza las opciones y los argumentos de los comandos, como los que se pasan a un shell texto .
- Descripción
- Sintaxis
- Ejemplos de
- Comandos relacionados
- Ayuda incorporada de Bash
- Índice de comandos de Linux
Descripción
getopts es la versión bash de otra herramienta del sistema, coronado . Observe que el comando bash tiene un s al final, para diferenciarlo del comando del sistema.
Mientras que la coronado la herramienta del sistema puede variar de un sistema a otro, bash getopts está definido por el estándar POSIX. Entonces, si escribe un script usando getopts , puede estar seguro de que se ejecuta en cualquier sistema que ejecute bash en modo POSIX (por ejemplo, colocar -el posix ).
getopts analiza opciones cortas, que son un solo guión (' - ') y una letra o un dígito. Ejemplos de opciones cortas son -2 , -D , y -D . También puede analizar opciones cortas en combinación, por ejemplo -2dD .
Sin embargo, getopts no se pueden analizar opciones con nombres largos. Si quieres opciones como --verboso o --ayuda , usar coronado en lugar de.
Sintaxis
|_+_|Cómo funciona
getopts procesa el parámetros posicionales del comando principal. En bash, esto se almacena en la variable de shell ' [correo electrónico protegido] '. Entonces, si ejecuta este comando:
|_+_|Durante el tiempo que mycmd está corriendo, la variable [correo electrónico protegido] contiene la cadena ' -a argument1 -b argument2 '. Puedes usar getopts a analizar gramaticalmente esta cadena para opciones y argumentos.
Cada vez que ejecuta getopts, busca una de las opciones definidas en optstring . Si encuentra una, coloca la letra de la opción en una variable llamada optname . Si la opción no coincide con las definidas en optstring , getopts establece la variable optname a un signo de interrogación (' ? ').
Si la opción espera un argumento, getopts obtiene ese argumento y lo coloca en $ OPTARG . Si no se encuentra un argumento esperado, la variable optname se establece en dos puntos (' : '). Luego, Getopts incrementa el índice posicional, $ OPTIND , que indica la siguiente opción a procesar.
La opción especial de dos guiones (' -- ') es interpretado por getopts como el final de las opciones.
getopts está diseñado para ejecutarse varias veces en su secuencia de comandos, en un bucle, por ejemplo. Procesa una opción por iteración de bucle. Cuando no haya más opciones para procesar, getopts devuelve falso, que termina automáticamente un tiempo círculo. Por esta razón, getopts y tiempo se utilizan con frecuencia juntos.
Especificando la cadena de opciones
optstring es un cuerda que define qué opciones y argumentos getopts buscar. Por ejemplo, en esta llamada a getopts:
|_+_|Las opciones que espera getopts son -a , -pag , y -CON , sin argumentos. Estas opciones se pueden combinar en cualquier orden como -la , -Bien , -Borrar , etc.
Digamos que le gustaría el -a y -CON opciones para tomar argumentos. Puede especificar esto poniendo dos puntos (' : ') después de esa opción en optstring . Por ejemplo:
|_+_|Ahora puede especificar argumentos a la -a y -CON opciones como -a argument1 -pZ argument2 . La -pag La opción no puede aceptar argumentos, porque no hay dos puntos después de la pag en optstring .
NotaHay dos caracteres reservados que no se pueden utilizar como opciones: los dos puntos (' : ') y el signo de interrogación (' ? ').
Comprobación detallada de errores
Por defecto, getopts informará de un error detallado si encuentra una opción desconocida o un argumento fuera de lugar. También establece el valor de optname a un signo de interrogación (' ? '). No asigna un valor a $ OPTARG .
Si la opción es válida pero no se encuentra un argumento esperado, optname se establece en ' ? ', $ OPTARG no está configurado y se imprime un mensaje de error detallado.
Comprobación silenciosa de errores
Sin embargo, si coloca dos puntos al comienzo de la optstring , getopts se ejecuta en 'modo silencioso de comprobación de errores'. No informará ningún error detallado sobre opciones o argumentos, y debe realizar una verificación de errores en su secuencia de comandos.
En modo silencioso, si una opción es inesperada, getopts establece optname a ' ? ' y $ OPTARG al carácter de opción desconocida.
Si la opción está bien pero no se encuentra un argumento esperado, optname está configurado en un colon (' : ') y $ OPTARG se establece en el carácter de opción desconocido.
Especificar argumentos personalizados
Usualmente querrás getopts para procesar los argumentos en [correo electrónico protegido] , pero en algunos casos, es posible que desee proporcionar argumentos manualmente para que getopts los analice. Si es así, puede especificar estos argumentos como el argumento final de la getopts mando.
Ejemplos de
Aquí hay un script bash usando getopts . El guión imprime un saludo, con un nombre opcional, un número variable de veces. Se necesitan dos opciones posibles: -norte NOMBRE y -t VECES .
|_+_|Si este script se llama saludo , así es como se ve la salida con diferentes opciones:
|_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_|Comandos relacionados
tiempo - Ejecuta un conjunto de acciones mientras una determinada condición es verdadera.