当前位置: 首页 > 面试题库 >

是否终止任何命令返回非零值的shell脚本?

任云瀚
2023-03-14
问题内容

我有一个Bash shell脚本,可以调用许多命令。如果任何命令返回的非零值,我都希望shell脚本自动返回1的返回值。

如果不显式检查每个命令的结果,是否有可能?

例如

dosomething1
if [[ $? -ne 0 ]]; then
    exit 1
fi

dosomething2
if [[ $? -ne 0 ]]; then
    exit 1
fi

问题答案:

将此添加到脚本的开头:

set -e

如果一个简单的命令以非零退出值退出,这将导致shell立即退出。简单命令是不属于if,while或直到测试的一部分的任何命令,也不是&&或||的一部分的任何命令。清单。

有关更多详细信息,请参见“ set”内部命令上的bash(1)手册页。

我个人几乎以“ set -e”开始几乎所有的shell脚本。当某个脚本在中间出现故障并顽固地破坏了其余脚本的假设时,固执地继续执行脚本确实很烦人。



 类似资料:
  • 问题内容: 我的docker文件如下: 当我跑步时: dockerfile中的步骤,直到:按预期成功运行,但是之后我得到了错误: 当我用谷歌搜索错误时,我得到诸如内存不足的建议。但是我已经证实,系统(中心)有足够的内存。 执行期间的命令行输出为: 问题答案: 如前所述,该命令按预期成功运行并报告。 此外,命令“坚持执行”杀死自己并返回退出代码137。此操作的最小更改是将您更新为 这只会强行忽略上一

  • 因此,我试图在Dockerfile中安装OpenJDK,但遇到了一些问题。它总是以以下消息出错:,然后在。这是执行失败的命令。目前在Ubuntu 20.04VM上 这是一个用5.0编写的Visual Studio项目,需要执行一个。jar文件。这些似乎没有帮助:apt-get update'返回了一个非零代码:100,Docker File非零代码100错误。最好是Java13,但这个问题阻止了我

  • 我尝试了与if-in-shell相反的方法,只在散列中不存在值的情况下进行操作。我从这里学会了在bash中创建哈希:Shell脚本中的关联数组 我声明了一个简单的哈希: 和 从这里查看myhash[$key]是否存在:检查数组中的索引或键的最简单方法? 我还学会了添加!在一个表达式前面做相反的if从句:如何使“if not true条件”? 但是下面的表达式 不起作用,并且未打印任何信息。没有错误

  • 这就是我的情况。 我希望能够退出具有非零值的RC/RC1。当执行以下代码时,如果RC为0,则返回带有非零退出代码的RC1(最佳情况),如果RC为非零且RC1也非零,则我将错过RC1的退出代码(意味着我将无法使用RC1的退出代码)。如何发送正确的退出代码?本质上,我想通过电子邮件发送非零变量

  • 问题内容: 这个问题已经在这里有了答案 : 子流程check_output返回非零退出状态1 (2个答案) 3年前关闭。 执行以下脚本… […] …导致错误: CalledProcessError:命令’[ping’,’-q’,’-c2’,’-W1’,‘10 .81.3.80’]’返回非零退出状态1 在中添加“ stderr = STDOUT”不会产生任何有用的反馈。 如何获取有关该错误的更多信息

  • 在Unix shell脚本中,我想通过if语句检查diff命令的输出是否等于0。这样我就可以相应地给出if case语句。 例如:Abc.sh 输出: