我正在编写一个bash
脚本,它在整个过程中多次使用像这样的参数扩展:
${pathvariable%/*}
${pathvariable##*/}
我需要在一些可能安装了旧版本的盒子上运行这个脚本bash
。我知道它可以工作,bash 4.1+
但我想知道它的便携性如何?
- 这种构造在旧版本中会失败
bash
吗?如果有,有哪些版本? - 我应该考虑一个更便携的结构吗?
我正在编写一个bash
脚本,它在整个过程中多次使用像这样的参数扩展:
${pathvariable%/*}
${pathvariable##*/}
我需要在一些可能安装了旧版本的盒子上运行这个脚本bash
。我知道它可以工作,bash 4.1+
但我想知道它的便携性如何?
bash
吗?如果有,有哪些版本?它们是在 POSIX 中定义的(请参见此处),因此您应该是安全的。
编辑:如果您偏执并且不相信 bash 的合规性:
$ ./bash --posix
$ echo ${BASH_VERSION}
2.05a.0(1)-release
$ foo="foo/bar"
$ echo "${foo%/*}"
foo
$ echo "${foo##*/}"
bar
2.05a
于 2001 年左右发布。
这在任何版本的 bash 中都不应该失败,因为它实际上是一个 korn shell 结构。只要您确定您将使用 bash(任何版本)就可以了。