ubuntu 16上的bash:set-e不在子shell中继承
当我运行这个命令时ubuntu 16上的bash:set-e不在子shell中继承,bash,debugging,ubuntu,exit-code,fail-fast,Bash,Debugging,Ubuntu,Exit Code,Fail Fast,当我运行这个命令时 set -e; echo $(echo "$-"); 我得到himBH作为输出。我希望输出中包含字母e。发生什么事了 我使用的是Ubuntu 16.04.1 LTS GNU bash,版本4.3.46(1)-发行版(x86_64-pc-linux-GNU)命令替换不会继承errexit选项,除非您处于POSIX模式或使用heritage\u errexitshell选项(添加到bash4.4) 命令替换不会继承errexit选项,除非您处于POSIX模式或使用inherit
set -e; echo $(echo "$-");
我得到himBH
作为输出。我希望输出中包含字母e
。发生什么事了
我使用的是Ubuntu 16.04.1 LTS
GNU bash,版本4.3.46(1)-发行版(x86_64-pc-linux-GNU)命令替换不会继承
errexit
选项,除非您处于POSIX模式或使用heritage\u errexit
shell选项(添加到bash
4.4)
命令替换不会继承
errexit
选项,除非您处于POSIX模式或使用inherit\u errexit
shell选项(添加到bash
4.4)
set-e
是。。。有争议的是,它的行为在不同的shell版本中有所不同,并且常常非常令人惊讶。考虑阅读。<代码> SET-E <代码>是…有争议的是,它的行为在不同的shell版本中有所不同,并且常常非常令人惊讶。考虑阅读。
192% bash -ec 'echo "$(echo "$-")"'
hBc
192% bash --posix -ec 'echo "$(echo "$-")"'
ehBc
192% bash -O inherit_errexit -ec 'echo "$(echo "$-")"' # 4.4+
ehBc