3

我正在编写一个bash脚本,它在整个过程中多次使用像这样的参数扩展:

${pathvariable%/*}
${pathvariable##*/}

我需要在一些可能安装了旧版本的盒子上运行这个脚本bash。我知道它可以工作,bash 4.1+但我想知道它的便携性如何?

  • 这种构造在旧版本中会失败bash吗?如果有,有哪些版本?
  • 我应该考虑一个更便携的结构吗?
4

2 回答 2

4

它们是在 POSIX 中定义的(请参见此处),因此您应该是安全的。

编辑:如果您偏执并且不相信 bash 的合规性:

$ ./bash --posix
$ echo ${BASH_VERSION}
2.05a.0(1)-release
$ foo="foo/bar"
$ echo "${foo%/*}"
foo
$ echo "${foo##*/}"
bar

2.05a于 2001 年左右发布。

于 2013-04-09T19:38:49.820 回答
2

这在任何版本的 bash 中都不应该失败,因为它实际上是一个 korn shell 结构。只要您确定您将使用 bash(任何版本)就可以了。

于 2013-04-09T18:56:13.867 回答