我想让我的bash脚本处理长参数。我找到了getopt
,但在OS X中不支持它。任何人都可以告诉我为什么getopt
是由BSD实现的,而不是GNU?
我尝试在GNU C lib中构建getopt
,但由于我的Linux技能很差,它失败了。
有人做过这项工作吗?
答案 0 :(得分:20)
只需运行brew install gnu-getopt
。
你可以指定它的路径
/usr/local/Cellar/gnu-getopt/1.1.6/bin/getopt
或使用brew link --force gnu-getopt
,以便在/usr/local/bin/
请注意,强制链接可能会破坏您的系统(因为它取代了gnu系统的getopt)。
另请参阅建议定义FLAGS_GETOPT_CMD
的其他答案。
答案 1 :(得分:2)
通常最好使用getopts
,并坚持使用短选项。您可以在this StackOverflow Q&A中查看正在运行的getopts。在整个OSX命令行工具中,短选项更加标准,并且一致性是一件好事。
此外,getopts内置于bash中,因此它在OSX中以及可以运行bash的其他所有平台中都可以使用。
请注意,OSX中还提供了getopt
。在终端中,键入man getopt
以查看其文档。它不支持长选项。当您编写在OSX上运行的工具时,这是一个不使用长选项的好理由。
如果您还想这样做,可以从macports安装getopt
。或者,如果您想要更好的可移植性,可以使用自己的长参数处理。
发布一些代码,我们会帮助调试它。