gpt4 book ai didi

bash - 如何在 Bash 脚本中捕获退出代码

转载 作者:行者123 更新时间:2023-11-29 08:41:14 24 4
gpt4 key购买 nike

我的 bash 代码中有很多退出点。我需要在退出时做一些清理工作,所以我使用 trap 为退出添加回调,如下所示:

trap "mycleanup" EXIT

问题是有不同的退出代码,我需要做相应的清理工作。我可以在 mycleanup 中获取退出代码吗?

最佳答案

接受的答案基本上是正确的,我只是想澄清一下。

下面的例子效果很好:

#!/bin/bash

cleanup() {
rv=$?
rm -rf "$tmpdir"
exit $rv
}

tmpdir="$(mktemp)"
trap "cleanup" EXIT
# Do things...

但是如果在没有函数的情况下进行内联清理,你必须更加小心。例如,这是行不通的:

trap "rv=$?; rm -rf $tmpdir; exit $rv" EXIT

相反,您必须转义 $rv$? 变量:

trap "rv=\$?; rm -rf $tmpdir; exit \$rv" EXIT

您可能还想转义 $tmpdir,因为它会在陷阱行执行时进行评估,如果 tmpdir 值稍后发生变化,则可能不会给出预期的结果行为。

编辑:使用 shellcheck检查您的 bash 脚本并注意此类问题。

关于bash - 如何在 Bash 脚本中捕获退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5312266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com