bash - 嵌套子外壳短路和设置 -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
解决方案
推荐阅读
- google-cloud-platform - Google Vision - 批量图像注释,将结果映射到请求图像
- python - Qt 设计器:图形查看和绘制图形
- javascript - 如何在给定的某个月份获取上个月的名称(用文字而不是数值)?
- julia - 如何解决:Julia 中的“解析包版本”?
- r - 当函数产生消息或警告时,R 函数 parallel::mclapply 会使 Jupyter Notebook 内核崩溃
- angular - Angular 阻止未经授权的 HTTP 调用
- powershell - 使用带有备用凭据的 WMI 创建文件夹
- python - 循环中的python从另一个中减去文件
- javascript - 为什么firefox会阻止react-leaflet加载瓷砖?
- php - laravel如何通过json响应显示外键属性?