V současné době píšu skript Bash, který má následující požadavky:
- měl by běžet na široké škále platforem Unix/Linux
- Měl by podporovat krátké i (GNU) dlouhé možnosti
Vím, že getopts
by byl preferovaný způsob z hlediska přenositelnosti, ale AFAIK nepodporuje dlouhé možnosti.
getopt
podporuje dlouhé možnosti, ale BashGuide důrazně nedoporučuje:
Nikdy nepoužívejte getopt(1). getopt neumí zpracovat prázdné řetězce argumentů nebo
argumenty s vloženými mezerami. Zapomeňte prosím, že to kdy
existovalo.
Stále je zde tedy možnost ruční analýzy. Toto je náchylné k chybám, vytváří poměrně standardní kód a chyby musím řešit sám (myslím, že getopt(s)
sami ošetřují chyby).
Jaká by tedy byla v tomto případě preferovaná volba?
Přijatá odpověď:
Pokud má být přenosný na řadu Unices, budete se muset držet POSIX sh. A AFAIU tam prostě nemáte jinou možnost, než ruční zpracování argumentů.