GNU/Linux >> Znalost Linux >  >> Linux

Getopt, Getopts nebo ruční analýza – co použít, když chci podporovat krátké i dlouhé možnosti?

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ů.


Linux
  1. Co je TAM a proč byste jím mohli chtít být?

  2. Chroot „vězení“ – co to je a jak jej používat?

  3. Chci počkat na deskriptor souboru i na mutex, jaký je doporučený způsob, jak to udělat?

  1. Jaký souborový systém použít, když používáte Windows i Linux?

  2. Jaký je rozdíl mezi jednou a dvěma pomlčkami pro parametry příkazového řádku?

  3. Jaký je rozdíl mezi volbami -g a -G v useradd

  1. Co je příkaz Chown v Linuxu a jak jej používat

  2. Co je příkaz cURL a jak jej používat?

  3. Kdy a proč bych měl používat Apt-get Update?