当前位置: 首页 > 知识库问答 >
问题:

Bash“set-e”[重复]的功能是什么

裴星洲
2023-03-14

在bash脚本中,有什么用

set -e

我认为这与环境变量有关,但我以前从未遇到过

共有3个答案

欧阳乐生
2023-03-14

假设脚本下面的当前目录中没有名为trown的文件:

#!/bin/bash
# demonstrates set -e
# set -e means exit immediately if a command exited with a non zero status

set -e 
ls trumpet #no such file so $? is non-zero, hence the script aborts here
# you still get ls: cannot access trumpet: No such file or directory
echo "some other stuff" # will never be executed.

您还可以将ex选项相结合,例如set-ex其中:

-x在执行时打印命令及其参数。

这可能有助于调试bash脚本。

参考:设置Manpage

公羊招
2023-03-14

man bash说

如果一个简单的命令(参见上面的SHELL GRAMMAR)以非零状态退出,则立即退出。如果失败的命令是命令列表的一部分,紧跟在一小时或直到关键字之后,是if语句中测试的一部分,是

如果您想避免测试bash脚本中每个命令的返回代码,这是获得“快速失败”行为的超级方便的方法

姚智
2023-03-14

引用帮助集

  -e  Exit immediately if a command exits with a non-zero status.

i、 e脚本或shell将在遇到任何以非0(失败)退出代码退出的命令时立即退出。

任何失败的命令都会导致shell立即退出。

例如:

打开终端并键入以下内容:

$ set -e
$ grep abcd <<< "abc"

当您在grep命令后按enter键时,shell就会退出,因为grep退出时的状态为非0,即它无法在文本abc中找到正则表达式

注意:要取消设置此行为,请使用set e。

 类似资料:
  • 我有一个bash脚本用于制作我的项目。我在脚本顶部设置了,以便在任何组件出现故障时中断执行。 其中一个命令会失败,但它失败是很自然的。我希望脚本表现为: 运行脚本。 到达并运行有问题的命令。 如果失败,不要中断执行。仅为此命令执行此操作。

  • 问题内容: 我正在研究脚本从该脚本的Debian存档(.deb)文件解压缩之前执行的 preinst 文件的内容。 该脚本具有以下代码: 我的第一个查询是关于这一行的: 我认为脚本的其余部分非常简单:它检查Debian / Ubuntu软件包管理器是否正在执行安装操作。如果是,它将检查我的应用程序是否刚刚安装在系统上。如果已安装,脚本将显示消息 “ MyApplicationName已安装” 并结

  • 我的第一个问题是关于行: 我认为脚本的其余部分非常简单:它检查Debian/Ubuntu包管理器是否正在执行安装操作。如果是,它会检查我的应用程序是否刚刚安装到系统上。如果有,脚本将打印消息“MyApplicationName is just installed”并结束(表示以“error”结束,不是吗?)。 如果用户正在要求Debian/Ubuntu包系统安装我的包,脚本也会删除两个目录。

  • 出发地:https://github.com/brandon-rhodes/luca/blob/master/requirements.txt 最后一行是做什么的?

  • 我偶然发现了这个代码。我一直在使用{}格式的箭头函数,这个()包装器是什么意思?

  • 问题内容: 我们经常看到如下: 有什么功能? 问题答案: DOCTYPE的最主要用途是在Quirks模式和Standards模式渲染之间切换浏览器。 出现此功能的原因是IE的旧版本中的“残破”渲染。人们认识到,如果Microsoft仅“修复”了IE呈现引擎,则许多现有站点将无法正确呈现。因此,它的工作方式是,如果您在页面中完全放置了_任何_有效的DOCTYPE声明,则假定您知道自己在做什么,并且浏