首页 > 解决方案 > 嵌套子外壳短路和设置 -e

问题描述

a) $> ( echo 0 ; ( echo 1 ; false ; echo 2 ) ; echo 3 )
0
1
2
3

b) $> ( echo 0 ; ( set -e ; echo 1 ; false ; echo 2 ) ; echo 3 )
0
1
3

c) $> ( set -e ; echo 0 ; ( echo 1 ; false ; echo 2 ) ; echo 3 )
0
1

d) $> ( set -e ; echo 0 ; ( set -e ; echo 1 ; false ; echo 2 ) ; echo 3 )
0
1

e) $> ( set -e ; echo 0 ; ( set -e ; echo 1 ; false ; echo 2 ) && echo ok ; echo 3 )
0
1
2
ok
3

我没有遵循最后一种情况,为什么外部(相对于最里面的子外壳)&&禁用最里面的set -e选项?前面的案例在这里表明一切都按预期工作,没有&&

除此以外还有什么解决办法吗?

$ ( set -e ; echo 0 ; ( { echo 1 && false && echo 2 ; } && echo ok ) || exit 1 ; echo 3 )
0
1

标签: bash

解决方案


推荐阅读