¿Cómo analizo los argumentos de la línea de comandos en Bash?

Digamos, tengo un script que se llama con esta línea:

./myscript -vfd ./foo/bar/someFile -o /fizz/someOtherFile

o este:

./myscript -v -f -d -o /fizz/someOtherFile ./foo/bar/someFile 

¿Cuál es la forma aceptada de analizar esto de manera que en cada caso (o alguna combinación de los dos) $v, $f y $d todo estará configurado para true y $outFile será igual a /fizz/someOtherFile?

preguntado Oct 10 '08, 14:10

Para los usuarios de zsh, hay un gran builtin llamado zparseopts que puede hacer: zparseopts -D -E -M -- d=debug -debug=d Y tener ambos -d y --debug en la $debug matriz echo $+debug[1] devolverá 0 o 1 si se utiliza uno de esos. Árbitro: zsh.org/mla/users/2011/msg00350.html -

Muy buen tutorial: linuxcommand.org/lc3_wss0120.php. Me gusta especialmente el ejemplo de "Opciones de línea de comandos". -

Creé un script que lo hace por ti, se llama - github.com/unfor19/bargs -

Vea también ¿Darle a un script bash la opción de aceptar banderas, como un comando? para un analizador de opciones elaborado, ad hoc, largo y corto. No intenta manejar argumentos de opción adjuntos a opciones cortas, ni opciones largas con = separando el nombre de la opción del valor de la opción (en ambos casos, simplemente asume que el valor de la opción está en el siguiente argumento). Tampoco maneja la agrupación en clústeres de opciones cortas, la pregunta no la necesitaba. -

Este gran tutorial de Baeldung muestra 4 formas de procesar argumentos de la línea de comandos en bash, que incluyen: 1) parámetros posicionales $1, $2, etc., 2) banderas con getopts y ${OPTARG}, 3) recorrer todos los parámetros ($@), y 4) recorrer todos los parámetros usando $#, $1, y la shift operador. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.