2013-04-09 180 views
3

我正在寫一個劇本bash它使用參數擴展這樣的貫穿了幾聲:兼容性

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

我需要一些箱子可能有運行此腳本舊版本的bash已安裝。我知道它在bash 4.1+的作品,但我想知道它是多麼便攜?

  • 這種結構會在老版本的bash中失效嗎?如果是這樣,哪個版本?
  • 我應該考慮更便攜的構造嗎?
+1

這兩個構造都符合POSIX標準,所以它們就像您可能獲得的那樣便攜。 – chepner 2013-04-09 19:37:03

回答

4

它們在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年〜。

+0

很好的解釋和大力支持。謝謝一堆! – nullrevolution 2013-04-09 21:14:15

2

這應該不會在任何版本的bash中失敗,因爲它真的是一個korn shell構造。只要你確定你將使用bash(任何版本)你的罰款。