我有一个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或until测试的命令,或&&;或者| |列表.

有关更多详细信息,请参阅"set"内部命令上的bash(1) man page.

我个人几乎所有的shell脚本都以"set-e"开头.当一个脚本在中间出现故障并且中断脚本其余部分的假设时,脚本很难继续下go .

Linux相关问答推荐

变量在vim中打印良好,但在bashshell中打印不好,这怎么可能发生?

重命名具有相同前缀的文件对中最旧的文件

命令行中使用`..`为什么会导致权限被拒绝错误?

如何更改文件的上次访问/修改/更改日期?

awk/sed 命令仅在模式 2 匹配时打印模式 1

在 Linux 中 Select 多个同名的可执行文件

如何判断 Linux 机器是否支持 AVX/AVX2 指令?

查看 linux 上的多核或多 CPU 利用率

Eclipse 的 C# 插件

如何使用 AWK 合并两个文件?

使用正则表达式时,Shell 'tar: not found in archive' 错误

Linux 上的 C++ 开发 - 我从哪里开始?

谁决定任何数据类型或 struct 的大小(取决于 32 位或 64 位)?

让 sudo 和 nohup 一起工作

解压tar tar.bz2 文件报错

crt1.o:在函数_start中:-Linux 中未定义对main的引用

如何在 Linux 中查看日志(log)文件并在查看时应用自定义过滤器?

初学者如何在 Linux 中开始使用 Mono?

如何使用cp从不同目录复制多个文件?

构建窗口管理器