我正在写一个剧本bash
它使用参数扩展这样的贯穿了几声:兼容性
${pathvariable%/*}
${pathvariable##*/}
我需要一些箱子可能有运行此脚本旧版本的bash
已安装。我知道它在bash 4.1+
的作品,但我想知道它是多么便携?
- 这种结构会在老版本的
bash
中失效吗?如果是这样,哪个版本? - 我应该考虑更便携的构造吗?
我正在写一个剧本bash
它使用参数扩展这样的贯穿了几声:兼容性
${pathvariable%/*}
${pathvariable##*/}
我需要一些箱子可能有运行此脚本旧版本的bash
已安装。我知道它在bash 4.1+
的作品,但我想知道它是多么便携?
bash
中失效吗?如果是这样,哪个版本?它们在POSIX中定义(见here),所以你应该是安全的。
编辑:如果你是偏执和bash的合规性的不信任:
$ ./bash --posix
$ echo ${BASH_VERSION}
2.05a.0(1)-release
$ foo="foo/bar"
$ echo "${foo%/*}"
foo
$ echo "${foo##*/}"
bar
2.05a
发布于2001年〜。
很好的解释和大力支持。谢谢一堆! – nullrevolution 2013-04-09 21:14:15
这应该不会在任何版本的bash中失败,因为它真的是一个korn shell构造。只要你确定你将使用bash(任何版本)你的罚款。
这两个构造都符合POSIX标准,所以它们就像您可能获得的那样便携。 – chepner 2013-04-09 19:37:03