GETOPT(1) Ordenes de usuario GETOPT(1) NOMBRE getopt - analiza una linea de ordenes (mejorado) SINOPSIS getopt optstring parameters getopt [options] [--] optstring parameters getopt [options] -o|--options optstring [options] [--] parameters DESCRIPCION getopt is used to break up (parse) options in command lines for easy parsing by shell procedures, and to check for valid options. It uses the GNU getopt(3) routines to do this. The parameters getopt is called with can be divided into two parts: options which modify the way getopt will do the parsing (the options and the optstring in the SYNOPSIS), and the parameters which are to be parsed (parameters in the SYNOPSIS). The second part will start at the first non-option parameter that is not an option argument, or after the first occurrence of '--'. If no '-o' or '--options' option is found in the first part, the first parameter of the second part is used as the short options string. If the environment variable GETOPT_COMPATIBLE is set, or if the first parameter is not an option (does not start with a '-', the first format in the SYNOPSIS), getopt will generate output that is compatible with that of other versions of getopt(1). It will still do parameter shuffling and recognize optional arguments (see the COMPATIBILITY section for more information). Las implementaciones tradicionales de getopt(1) son incapaces de soportar los espacios en blanco y otros caracteres especiales (especificos del shell) en argumentos y parametros libres. Para resolver este problema, esta implementacion puede generar salida entrecomillada (N. del T. quoted) que puede ser, a su vez, tratada por la shell (tipicamente usando la orden eval). Esto tiene el efecto de preservar dichos caracteres, pero debe llamarse a getopt de una manera no compatible con otras versiones (el segundo y tercer formato en la SINOPSIS). Para determinar cuando esta version mejorada de getopt(1) esta instalada, puede usarse la opcion (-T) que realiza dicha prueba. OPCIONES -a, --alternative Permitir que las opciones largas comiencen con un solo "-". -l, --longoptions longopts Las opciones largas (mas de un caracter) para ser analizadas. Pueden especificarse mas de una opcion al mismo tiempo, separandolas con comas. Esta opcion puede darse mas de una vez, ya que longopts es acumulativa. Cada nombre de opcion larga en longopts puede ir secundado por dos puntos (:) para indicar que es un argumento requerido, y por doble dos puntos (::) para indicar que es un argumento opcional. -n, --name progname El nombre que sera usado por las rutinas getopt(3) cuando generen algun error. Notese que los errores de getopt(1) son todavia generados tal y como se obtienen de getopt. -o, --options shortopts The short (one-character) options to be recognized. If this option is not found, the first parameter of getopt that does not start with a '-' (and is not an option argument) is used as the short options string. Each short option character in shortopts may be followed by one colon to indicate it has a required argument, and by two colons to indicate it has an optional argument. The first character of shortopts may be '+' or '-' to influence the way options are parsed and output is generated (see the SCANNING MODES section for details). -q, --quiet Deshabilita la salida de errores por parte de getopt(3). -Q, --quiet-output No genera la salida normal. getopt(3) sigue generando errores a menos que no se use -q. -s, --shell shell Set quoting conventions to those of shell. If the -s option is not given, the BASH conventions are used. Valid arguments are currently 'sh', 'bash', 'csh', and 'tcsh'. -T, --test Prueba si su getopt(1) es esta version mejorada o una version antigua. No genera ningun tipo de salida y devuelve un codigo de error 4. Otras implementaciones de getopt(1), y esta version si la variable de entorno GETOPT_COMPATIBLE esta definida, retornan "--" y un codigo de error 0. -u, --unquoted No produce salida entrecomillada. Notese que los espacios en blanco y los caracteres especiales (dependientes del shell) pueden causar estragos en este modo (tal y como se producen en otras implementaciones de getopt(1)). -h, --help Mostrar texto de ayuda y finalizar. -V, --version Display version and exit. ANALISIS Esta seccion especifica el formato de la segunda parte de los parametros de getopt (los parameters en la SINOPSIS). La siguiente seccion (SALIDA) describe la salida que se genera. Estos parametros seran los que tipicamente se usen al llamar a un programa del shell. Debe tenerse cuidado de que cada parametro con el que se llamo al fichero de ordenes de la shell corresponda exactamente con un parametro de la lista de parametros de getopt (vease los EJEMPLOS). Todo el analisis es llevado a cabo por las rutinas getopt(3) de GNU. Los parametros son pasados de izquierda a derecha. Cada parametro es clasificado como una opcion corta, una opcion larga, un argumento de una opcion, o un parametro libre. Una opcion corta es un "-" seguido por un caracter de una opcion corta. Si la opcion tiene un argumento requerido, debera aparecer justo despues del caracter de la opcion o como el siguiente parametro (por ejemplo, separados por espacios en blanco en la linea de ordenes). Si la opcion tiene un argumento opcional, debera aparecer justo despues del caracter de la opcion si es que existe. Es posible especificar varias opciones cortas despues de un "-", siempre y cuando todas (exceptuando posiblemente la ultima) no necesite argumentos requeridos o opcionales. Una opcion larga normalmente comienza por "--" seguido por el nombre de la opcion.Si la opcion tiene un argumento requerido, debera aparecer justo despues del nombre de la opcion, separado por un "=", o como el siguiente argumento (por ejemplo separado por espacios en blanco en la linea de ordenes).Si la opcion tiene un argumento opcional, debera aparecer justo despues del nombre de la opcion, separado por "=", si es que existe, (si se anade el `=' pero nada detras de el, se interpretara como si no existiera ningun argumento; este es un ligero fallo, vease la seccion FALLOS). Las opciones largas pueden ser abreviadas, siempre y cuando la abreviacion no sea ambigua. Cualquier parametro que no comience por un "-", y no sea un argumento requerido de una opcion previa, sera interpretado como un parametro libre. Cualquier parametro despues de un "--" aislado sera interpretado como un parametro libre. Si la variable de entorno POSIXLY_CORRECT esta definida, o si el caracter de una opcion corta comienza por un "+", los restantes parametros son interpretados como parametros libres tan pronto como sea encontrado el primero de los parametros libres. SALIDA Se genera una salida por cada elemento descrito en la seccion anterior. Se realiza en el mismo orden en el que los elementos son especificados en la entrada, exceptuando los parametros libres. La salida puede generarse en modo compatible (sin entrecomillado), o en un modo en el que los espacios en blanco y otros caracteres especiales entre argumentos y parametros libres son preservados (vease ENTRECOMILLADO). Cuando la salida es procesada en un fichero de ordenes de la shell , aparecera compuesta por distintos elementos que pueden ser tratados uno a uno (usando la orden shift existente el la mayoria de los lenguajes de shell). Esto no funciona completamente en el modo sin entrecomillado, ya que los elementos pueden ser divididos por lugares inesperados si contienen espacios en blanco o caracteres especiales. Si hay problemas durante el analisis de los parametros, por ejemplo como consecuencia de no encontrar un argumento requerido o de una opcion no reconocida, se generara un error en stderr, no aparecera en la salida el elemento en discordia, y se devolvera un codigo de error diferente de cero. Para una opcion corta, la salida consta de un simple "-" y el caracter de la opcion. Si la opcion tiene un argumento, el siguiente parametro se tomara como el argumento. Si la opcion necesita de un argumento opcional, pero no se ha encontrado ninguno, el siguiente parametro se generara pero se encontrara vacio en el formato entrecomillado, y no se generara ese segundo parametro en el formato no entrecomillado (compatible). Notese que la mayoria de las otras implementaciones de getopt(1) no soportan argumentos opcionales. Si se especificaran mas de una opcion despues de un "-", cada una se presentaria en la salida como un parametro independiente. Para una opcion larga, se generara el "--" y el nombre completo de la opcion como un unico parametro. Esto se hace indistintamente de que la opcion estuviera abreviada o fuera especificada con un "-" en la entrada. Los argumentos se manejan como con las opciones cortas. Normalmente, la salida de los parametros libres no se generara hasta que todas las opciones y sus argumentos hayan sido generadas. Entonces se generara un "--" como si fuera un solo parametro , y despues los parametros libres en el orden en que se encontraron, cada uno como un parametro independiente. Solo si el primer caracter de la cadena de opciones cortas fuera un solo "-", la salida de los parametros libres se generaria en el lugar en que fueron encontrados en la entrada (esto no esta soportado si se usa el primer formato que aparece en la SINOPSIS; en este caso todas las ocurrencias anteriores de "-" y "+" son ignoradas). ENTRECOMILLADO En el modo compatible, los espacios en blanco o caracteres `especiales' en los argumentos o parametros libres no son tratados correctamente. Dado que la salida alimenta al fichero de ordenes de la shell, este programa no sabe como se supone que la entrada es troceada en los diferentes parametros. Para solventar el problema, esta implementacion ofrece el entrecomillado. La idea es que la salida es generada con comillas encerrando a cada parametro. Cuando esta salida alimenta al shell (tipicamente por la orden eval del interprete), se particiona correctamente en los diferentes parametros. El entrecomillado no se encontrara activado si la variable de entorno GETOPT_COMPATIBLE esta definida, si se usa la primera forma de la SINOPSIS, o si la opcion "-u" es encontrada. Cada tipo de shell usa convenciones de entrecomillado diferentes. Pero puede usarse la opcion "-s" para seleccionar el shell que este usando. Actualmente son soportados los siguientes: "sh", "bash", "csh" y "tcsh". Actualmente, solo se distinguen dos "tipos": las convenciones de entrecomillado del tipo sh y las del tipo csh. Probablemente si usa algun otro lenguaje de shell, uno de estos dos tipos pueda servirle. MODOS DE EXPLORACION El primer caracter de la cadena de opciones cortas debe ser un "-" o un "+" para indicar el modo de exploracion especial. Si se una la primera forma que aparece en la SINOPSIS son ignoradas; aun asi, la variable de entorno POSIXLY_CORRECT es examinada, tengase en cuenta. Si el primer caracter es "+", o si la variable de entorno POSIXLY_CORRECT esta definida, el analisis finaliza tan pronto como en primer parametro libre (por ejemplo un parametro que no comience por un "-") es encontrado y no es un argumento de alguna opcion. Los restantes parametros son interpretados como parametros libres. Si el primer caracter es un "-", la salida de los parametros libres se realiza en el orden en que son encontrados; en el modo normal, se agrupan al final de la salida despues de generar un parametro consistente en un unico "--". Notese que este parametro "--" se genera igualmente, pero siempre sera el ultimo parametro en este modo de exploracion. COMPATIBILIDADES Esta version de getopt(1) ha sido escrita para ser tan compatible como sea posible con otras versiones. Normalmente solo debe reemplazar aquellas por esta nueva version sin ningun otro cambio, y con algunas ventajas. If the first character of the first parameter of getopt is not a '-', getopt goes into compatibility mode. It will interpret its first parameter as the string of short options, and all other arguments will be parsed. It will still do parameter shuffling (i.e., all non-option parameters are output at the end), unless the environment variable POSIXLY_CORRECT is set, in which case, getopt will prepend a '+' before short options automatically. La variable de entorno GETOPT_COMPATIBLE fuerza a getopt a entrar en el modo compatible. Definiendo al mismo tiempo esta variable de entorno y POSIXLY_CORRECT se ofrece una compatibilidad al 100% para programas "problematicos". Aunque normalmente no es necesario. En el modo compatible, los primeros caracteres "-" y "+" en la cadena de opciones cortas son ignorados. VALOR DEVUELTO getopt returns error code 0 for successful parsing, 1 if getopt(3) returns errors, 2 if it does not understand its own parameters, 3 if an internal error occurs like out-of-memory, and 4 if it is called with -T. EJEMPLOS Example scripts for (ba)sh and (t)csh are provided with the getopt(1) distribution, and are installed in /usr/share/doc/util-linux directory. ENTORNO POSIXLY_CORRECT Esta variable de entorno es examinada por las rutinas de getopt(3). Si esta definida, el analisis finaliza tan pronto como se encuentre un parametro que no es una opcion o un argumento de una opcion. Los restantes parametros son interpretados como parametros libres, aunque comiencen por un '-'. GETOPT_COMPATIBLE Fuerza a getopt a usar el primer formato de llamada tal y como se especifica en la SINOPSIS. ERRORES getopt(3) can parse long options with optional arguments that are given an empty optional argument (but cannot do this for short options). This getopt(1) treats optional arguments that are empty as if they were not present. The syntax if you do not want any short option variables at all is not very intuitive (you have to set them explicitly to the empty string). AUTOR Frodo Looijaard VEASE TAMBIEN bash(1), tcsh(1), getopt(3) INFORMAR DE ERRORES For bug reports, use the issue tracker . DISPONIBILIDAD La orden getopt forma parte del paquete util-linux, el cual puededescargarse de Linux Kernel Archive . util-linux 2.41 2025-03-29 GETOPT(1)