В настоящее время я пишу скрипт Bash, который имеет следующие требования:
- он должен работать на самых разных платформах Unix / Linux
- он должен поддерживать как короткие, так и (GNU) длинные опции
Я знаю, что это getopts
было бы предпочтительным способом с точки зрения мобильности, но AFAIK это не поддерживает длинные варианты.
getopt
поддерживает длинные опции, но BashGuide настоятельно рекомендует:
Никогда не используйте getopt (1). getopt не может обрабатывать пустые строки аргументов или аргументы со встроенным пробелом. Пожалуйста, забудьте, что это когда-либо существовало.
Таким образом, есть возможность ручного разбора. Это подвержено ошибкам, производит довольно много стандартного кода, и мне нужно обрабатывать ошибки самостоятельно (я думаю, что getopt(s)
делать обработку ошибок самостоятельно).
Итак, что будет предпочтительным выбором в этом случае?