Attualmente sto scrivendo uno script Bash che ha i seguenti requisiti:
- Dovrebbe funzionare su un'ampia varietà di piattaforme Unix/Linux
- Dovrebbe supportare sia le opzioni short che (GNU) long
So che getopts
sarebbe il modo preferito in termini di portabilità ma AFAIK non supporta opzioni lunghe.
getopt
supporta le opzioni lunghe ma BashGuide lo sconsiglia vivamente:
Non usare mai getopt(1). getopt non può gestire stringhe di argomenti vuote o argomenti
con spazi vuoti incorporati. Per favore, dimentica che è mai
esistito.
Quindi, c'è ancora l'opzione di analisi manuale. Questo è soggetto a errori, produce un po 'di codice standard e ho bisogno di gestire gli errori da solo (credo getopt(s)
eseguire la gestione degli errori da soli).
Quindi, quale sarebbe la scelta preferita in questo caso?
Risposta accettata:
Se deve essere portatile su una vasta gamma di Unice, dovresti attenersi a POSIX sh. E AFAIU lì non hai altra scelta che gestire manualmente gli argomenti a rotazione.