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.