我正在寫一個劇本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