我怎样才能使用" getopt"来实现bash与长参数的交易?在Mac中命令?

时间:2012-08-28 02:36:25

标签: macos bash gnu

我想让我的bash脚本处理长参数。我找到了getopt,但在OS X中不支持它。任何人都可以告诉我为什么getopt是由BSD实现的,而不是GNU? 我尝试在GNU C lib中构建getopt,但由于我的Linux技能很差,它失败了。

有人做过这项工作吗?

2 个答案:

答案 0 :(得分:20)

brew bottle for getopt

只需运行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。或者,如果您想要更好的可移植性,可以使用自己的长参数处理。

发布一些代码,我们会帮助调试它。