【发布时间】:2017-03-24 18:26:04
【问题描述】:
找不到合适的标题,我不理解 dash/bash 中的行为。也就是说,如果命令失败,我会使用 set -e 来解决问题,并使用命令组来处理积极的结果。
即。总体方案是:
[ ! wantcommand ] || command
Than 表示该命令仅在需要时执行,失败将自动终止脚本。
可能需要进行一些后处理,在这种情况下我使用这个:
[ ! wantcommand ] || { command && postprocess; }
这导致了一些奇怪的错误搜索,因为这不会杀死外壳,我无法理解原因。我现在必须通过一些shell代码块,但想了解原因。
用于测试:
bash -c 'set -e; { false || false && echo "post" ; }; echo "ec $?"'
或:
bash -c 'set -e; { set -e; false || false && echo "post" ; }; echo "ec $?"'
注意:我不是要求修复,而是主要为什么返回码是 1,但 shell 不会退出
【问题讨论】: