gpt4 book ai didi

bash - 如何判断 bash 脚本中的任何命令是否失败(非零退出状态)

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

我想知道 bash 脚本中是否有任何命令以非零状态退出。

我想要类似于 set -e 功能的东西,除了我不希望它在命令以非零状态退出时退出。我希望它运行整个脚本,然后我想知道:

a) 所有命令以退出状态 0 退出
-或者-
b) 一个或多个命令以非零状态退出


例如,给定以下内容:

#!/bin/bash

command1 # exits with status 1
command2 # exits with status 0
command3 # exits with status 0

我希望所有三个命令都运行。运行脚本后,我想要一个指示,表明至少有一个命令以非零状态退出。

最佳答案

在 ERR 上设置陷阱:

#!/bin/bash

err=0
trap 'err=1' ERR

command1
command2
command3
test $err = 0 # Return non-zero if any command failed

您甚至可以进行一些内省(introspection)以获取有关错误发生位置的数据:

#!/bin/bash
for i in 1 2 3; do
eval "command$i() { echo command$i; test $i != 2; }"
done

err=0
report() {
err=1
printf '%s' "error at line ${BASH_LINENO[0]}, in call to "
sed -n ${BASH_LINENO[0]}p $0
} >&2
trap report ERR

command1
command2
command3
exit $err

关于bash - 如何判断 bash 脚本中的任何命令是否失败(非零退出状态),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42218009/

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