gpt4 book ai didi

来自另一个脚本错误处理程序的 Bash 函数

转载 作者:行者123 更新时间:2023-11-29 09:46:46 25 4
gpt4 key购买 nike

我有以下情况。脚本 A 源脚本 B。脚本 B 有一个名为 check 的函数,它不会对其执行的任何命令进行错误处理。

check () {
cmd1
cmd2
cmd3
...
}

我的目标是从 A 调用函数检查,如果任何 cmd* 失败则退出。

我已经尝试从 A“check || exit 1”开始,但是如果 cmd2 失败而 cmd3 成功,A 不会退出。 set -e 也没有为我完成这项工作。

感谢任何帮助。

最佳答案

您可以尝试自定义退出函数。

使用文件A:

#!/bin/bash
source fileB
check

和文件B:

#!/bin/bash
declare -a exitcode

check() {
cmd1
cmd2
trap finish EXIT
}

cmd1() {
myexit 1
}

cmd2() {
myexit 0
}

myexit() {
exitcode+=$1
}

finish() {
[[ ${exitcode[*]} =~ 1 ]] && exit 1 || exit 0
}

然后:

$ ./fileA; echo $?
1

退出代码附加在一个数组中,该数组在 finish() 函数中退出时进行检查。

关于来自另一个脚本错误处理程序的 Bash 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35819590/

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