Zer*_*ase 2 bash error-handling command-substitution set
我已经set -e
为我的脚本打开了。唯一的事情是这里有一个命令,我不想让脚本在失败时退出,但我希望其他所有东西都能做到这一点。set -e
当抛出错误代码时,我如何继续,而不让我的脚本退出?
有问题的脚本:
native=$(pacman -Qenq -)
Run Code Online (Sandbox Code Playgroud)
如果 stdin 具有非本地包名称,则会将错误代码写入 stdin。
set -e
akaset -o errexit
不适用于作为条件的一部分的命令,例如:
if cmd; do
until cmd; do
while cmd; do
cmd || whatever
cmd && whatever
Run Code Online (Sandbox Code Playgroud)
这也适用于ERR
支持它的炮弹的陷阱。
因此,忽略命令失败的惯用方法是:
cmd || : errors ignored
Run Code Online (Sandbox Code Playgroud)
要不就:
cmd || true
cmd || :
Run Code Online (Sandbox Code Playgroud)
抵消set -e
该cmd
调用并且还设置$?
为0(到的:
/true
时cmd
失败)
cmd && true
ret=$?
Run Code Online (Sandbox Code Playgroud)
也取消set -e
但保留 的退出状态cmd
。