gpt4 book ai didi

bash - 如何从源 bash 脚本返回错误

转载 作者:行者123 更新时间:2023-12-05 01:19:28 25 4
gpt4 key购买 nike

我对 bash 脚本相当陌生。我有 4 个嵌套的 bash 脚本,我无法适本地从第 4 个脚本传播错误。例如:

script1.sh:
source script2.sh
<check for error and display appropriate message>
script2.sh:
source script3.sh param_1
<return to script1 on error>
source script3.sh param_2
<return to script1 on error>
source script3.sh param_n
<return to script1 on error>
script3.sh
<some processing>
script4.sh
echo "this statement is not reached"
return $?
script4.sh
<some processing>
exit $?

我的要求是:

  1. 我需要在 script1 中定义一个关联数组,它在 script2 中填充并在 script3 的范围内可用。我认为唯一的方法是源脚本 2 和脚本 3
  2. script4 的执行不是源代码,因为该脚本也可以独立于这些父脚本执行

thread谈到使用 return 语句从源 bash 脚本返回,但是当 script4 被执行时我需要退出。我不明白为什么 script4 中的 exit 语句会导致原始 shell 和子 shell 都终止?它应该只退出子 shell 吗?

我需要查看信号和陷阱吗?

感谢您的帮助

最佳答案

你可以保留set -e如果你想启用。然后你必须更加小心地调用你知道退出状态可能为非零的脚本:

script3.sh
<some processing>
if script4.sh; then
rc=0
else
rc=$?
fi
echo "script4 complete"
return $rc

参见 https://www.gnu.org/software/bash/manual/bashref.html#index-set

国际海事组织,使用 set -e如果您真的想因任何错误而中止程序,则这是合适的。在这里,你想去哪里<check for error and display appropriate message> , 显然不是这样。

关于bash - 如何从源 bash 脚本返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39773569/

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