0
當我運行此命令慶典在Ubuntu 16:設置-e沒有繼承內殼層
set -e; echo $(echo "$-");
我得到himBH
作爲輸出。我期待在輸出中包含字母e
。這是怎麼回事?
我在Ubuntu 16.04.1 LTS與 GNU的bash,版本46年3月4日(1)-release下(x86_64-PC-Linux的GNU)
當我運行此命令慶典在Ubuntu 16:設置-e沒有繼承內殼層
set -e; echo $(echo "$-");
我得到himBH
作爲輸出。我期待在輸出中包含字母e
。這是怎麼回事?
我在Ubuntu 16.04.1 LTS與 GNU的bash,版本46年3月4日(1)-release下(x86_64-PC-Linux的GNU)
命令替換不繼承errexit
選項,除非你處於POSIX模式下,或者使用inherit_errexit
shell選項(已添加到bash
4.4)。
192% bash -ec 'echo "$(echo "$-")"'
hBc
192% bash --posix -ec 'echo "$(echo "$-")"'
ehBc
192% bash -O inherit_errexit -ec 'echo "$(echo "$-")"' # 4.4+
ehBc
'set -e'是... *有爭議的* - 它的行爲在不同的shell版本之間有所不同,通常非常令人驚訝。考慮閱讀[BashFAQ#105](http://mywiki.wooledge.org/BashFAQ/105)。 –