我正在编写一个bash
脚本,它使用像这样的参数展开几次:
${pathvariable%/*}
${pathvariable##*/}
我需要在一些可能安装了较旧版本bash
的机器上运行这个脚本。我知道它在bash 4.1+
工作,但我想知道它有多便携?
- 这种构造在旧版本的
bash
中会失败吗?如果有,是哪个版本? - 是否有更便携的构造我应该考虑?
它们是在POSIX中定义的(见这里),所以你应该是安全的。
EDIT:如果你是偏执狂,不相信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(任何版本),您就可以。