bash 错误后同时包含可选和非可选命令的陷阱
bash trap with both optional and non-optional commands after error
我很难理解如何正确使用 bash 的 trap
命令。
我有一个我想要的脚本
- 做一个
- 做B,可能会失败
- 不管B成功还是失败,都做C
- 如果B失败了,也做D
我想我知道怎么做 1-3。那看起来像;
echo "I am A"
function B {
echo "I am C"
}
trap B EXIT
echo "I am B"
但是我把D放在哪里呢?如果它进入函数 B,无论 B 是否失败,它都会执行。如果它在外面,它只会在成功时发生。我使用 trap
错了吗?
陷阱可以使用任意代码块而不仅仅是函数名称。
您可以在陷阱中调用函数评估成功或失败并在需要时调用下一个函数。
trap 'B || D' exit
您还可以将整个 B || D
作为 E
的主体,然后在退出时调用 that,如果您更喜欢坚持使用函数名字。 ;)
我很难理解如何正确使用 bash 的 trap
命令。
我有一个我想要的脚本
- 做一个
- 做B,可能会失败
- 不管B成功还是失败,都做C
- 如果B失败了,也做D
我想我知道怎么做 1-3。那看起来像;
echo "I am A"
function B {
echo "I am C"
}
trap B EXIT
echo "I am B"
但是我把D放在哪里呢?如果它进入函数 B,无论 B 是否失败,它都会执行。如果它在外面,它只会在成功时发生。我使用 trap
错了吗?
陷阱可以使用任意代码块而不仅仅是函数名称。
您可以在陷阱中调用函数评估成功或失败并在需要时调用下一个函数。
trap 'B || D' exit
您还可以将整个 B || D
作为 E
的主体,然后在退出时调用 that,如果您更喜欢坚持使用函数名字。 ;)