对于没有长选项的可移植shell脚本,可以始终使用getopt吗?

时间:2015-08-03 20:47:25

标签: shell scripting posix sh

我需要为许多平台编写POSIX shell脚本,并且发现其中至少有一个没有getopts但它确实有getopt

到处都支持getopt吗?如果不是,它在哪里?

我没有任何“长期选择”。我确实有不带参数的选项,其他带整数或字符串的选项(通常是没有空格的路径)和其他位置参数(所有这些都放在选项之后,因为我以前依赖getopts)。

只要我不需要长期选择,我是否可以始终依赖getopt?如果没有,何时不?

编辑:我在常见问题解答中读到了一条引文,内容是关于我们应该忘记getopt是否存在,但后面是an answer which appeared to disprove the rationale for the quote

StéphaneChazelas写道(强调我的)“getopt是一个传统的命令,它早在Linux发布之前就来自System V. getopt 从未标准化。没有POSIX,Unix或Linux(LSB)曾对getopt命令进行了标准化。“

有没有办法在这三个上使用getopt?就像这三个共同的最小特征集一样?

谢谢!

1 个答案:

答案 0 :(得分:1)

反对getopt的论据是针对不是来自util-linux的版本(即来自给定Bash FAQ链接的“getopt的传统版本”)。

你所关联的答案错过了上下文(我几乎认为故意错过了它,因为引用的片段在关键重要的上下文词“传统”之后立即开始。并且遵循解释内容的句子在这种情况下,“传统”意味着。)

util-linux getopt支持它们,传统的getopt不支持它们。这使得它完全不可移植。

除了getopt之外,我不能谈论getopt的一般可移植性,但我希望它的基本功能可能几乎适用于所有地方(除非你知道你的代码将继续运行,否则它将更加重要)模糊的“环境可能不会发生。”

据说非完全可移植的非git merge解决方案并不是特别复杂,应该能够处理您编写代码所需的一切。

相关问题