GNU/Linux >> Tutoriales Linux >  >> Linux

Getopt, Getopts o análisis manual:¿qué usar cuando quiero admitir opciones cortas y largas?

Actualmente estoy escribiendo un script Bash que tiene los siguientes requisitos:

  • debe ejecutarse en una amplia variedad de plataformas Unix/Linux
  • debe ser compatible con opciones cortas y largas (GNU)

Sé que getopts sería la forma preferida en términos de portabilidad, pero AFAIK no admite opciones largas.

getopt admite opciones largas, pero BashGuide recomienda encarecidamente que no lo haga:

Nunca use getopt(1). getopt no puede manejar cadenas de argumentos vacías, o
argumentos con espacios en blanco incrustados. Por favor, olvida que alguna vez
existió.

Por lo tanto, todavía existe la opción de análisis manual. Esto es propenso a errores, produce bastante código repetitivo y necesito manejar los errores por mí mismo (supongo que getopt(s) hacen el manejo de errores por sí mismos).

Entonces, ¿cuál sería la opción preferida en este caso?

Respuesta aceptada:

Si tiene que ser portátil para una gama de Unices, tendría que ceñirse a POSIX sh. Y AFAIU allí, simplemente no tiene más remedio que manejar los argumentos a mano.


Linux
  1. Chroot "cárcel":¿qué es y cómo usarlo?

  2. Quiero esperar tanto en un descriptor de archivo como en un mutex, ¿cuál es la forma recomendada de hacerlo?

  3. ¿Qué sistema de archivos usar cuando se usa tanto Windows como Linux?

  4. ¿Cuándo usar Bash y cuándo usar Perl/Python/Ruby?

  5. ¿Cuál es la diferencia entre las opciones -g y -G en useradd?

¿Qué es chroot jail y cómo usarlo?

Cómo utilizar los comandos y las opciones de SFTP

Comando de archivo de Linux:qué hace y cómo usarlo

Comando de cola de Linux:qué es y cómo usarlo

Qué es Terraform y cómo instalarlo y usarlo en AWS EC2

¿Qué es una máquina virtual y por qué usarla?