set -e 的作用

简介:
1
2
3
4
#!/bin/bash
set  -e
command  1command 2...
exit  0-----------------------

-----------------------------------

Every script you write should include set -e at the top. This tells bash that it should exit the script if any statement returns a non-true return value. The benefit of using -e is that it prevents errors snowballing into serious issues when they could have been caught earlier. Again, for readability you may want to use set -o errexit.

你写的每个脚本都应该在文件开头加上set -e,这句语句告诉bash如果任何语句的执行结果不是true则应该退出。这样的好处是防止错误像滚雪球般变大导致一个致命的错误,而这些错误本应该在之前就被处理掉。如果要增加可读性,可以使用set -o errexit,它的作用与set -e相同。


Using -e gives you error checking for free. If you forget to check something, bash will do it for you. Unfortunately it means you can't check $? as bash will never get to the checking code if it isn't zero. There are other constructs you could use:

使用-e帮助你检查错误。如果你忘记检查(执行语句的结果),bash会帮你执行。不幸的是,你将无法检查$?,因为如果执行的语句不是返回0,bash将无法执行到检查的代码。你可以使用其他的结构:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[plain] view plain copy
command  
if  "$?" - ne  0];  then   
     echo  "command failed" ;   
     exit  1;   
fi   
could be replaced with
能够被代替为
[plain] view plain copy
command  || {  echo  "command failed" exit  1; }   
or
或者
[plain] view plain copy
if  command then  
      echo  "command failed" ;   
     exit  1;   
fi

What if you have a command that returns non-zero or you are not interested in its return value? You can use command || true, or if you have a longer section of code, you can turn off the error checking, but I recommend you use this sparingly.

如果你有一个命令返回非0或者你对语句执行的结果不关心,那你可以使用command || true,或者你有一段很长的代码,你可以关闭错误检查(不使用set -e),但是我还是建议你保守地使用这个语句。




 本文转自 sjfbjs 51CTO博客,原文链接:http://blog.51cto.com/11886896/1878719
相关文章
|
传感器 芯片
STM32--PWR电源控制
STM32--PWR电源控制
545 0
STM32--PWR电源控制
|
JavaScript 前端开发 容器
vue element plus Layout 布局
vue element plus Layout 布局
506 0
|
9月前
|
API 数据库
什么是请求资源(Request Resource)?
请求资源是Web开发和API设计中的核心概念,指客户端通过URL访问或操作的服务器目标。它包括路径资源(如`/users/123`)、查询资源(如`?category=electronics`)和请求体资源(如POST提交的数据)。良好的API设计应遵循资源名用名词、使用复数形式及避免深层嵌套等原则,以提升可读性和一致性。掌握请求资源的概念有助于优化API交互效率与维护性。
|
人工智能 移动开发 IDE
安利几款与钉钉平台无缝集成打通账号认证的企业文档管理系统
钉钉是很多中小企业都爱用的产品,开通账号就能直接使用了,应用生态非常丰富,尤其是AI技术的应用,走在行业前列。但仍有很多企业对于全面拥抱SaaS服务充满了顾虑,尤其在内部资料的管理这块,即使钉钉在线文档已经提供了非常优秀的协作体验,不少客户仍更偏爱私有部署在局域网里面的企业文档管理系统。那么能将企业内部部署的文档管理系统集成到钉钉平台上面,和钉钉文档并行使用呢?市面上又有哪些企业文档管理系统软件支持与钉钉的集成呢?这也是很多企业客户的疑问。
安利几款与钉钉平台无缝集成打通账号认证的企业文档管理系统
|
分布式计算 DataWorks 关系型数据库
阿里云数加-分析型数据库AnalyticDB数据导入的多样化策略
通过合理利用这些数据导入方法,用户可以充分发挥AnalyticDB的实时计算能力和高并发查询性能,为业务分析和决策提供强有力的数据支持。
|
存储 算法 C++
c++string容器-字符串比较讲解
c++string容器-字符串比较讲解
925 1
|
数据采集 NoSQL 数据可视化
掌握金融数据分析的基本方法和工具
在金融数据分析的基本方法中,由于金融数据本身所具有的高复杂性,很多情况下需要借助数学模型来描述金融数据的特征。因此,金融数据分析通常会涉及到多个数学模型,这些模型的建立与求解都离不开统计计算和数据可视化。
|
Shell
shell脚本写一个自动抢火车票的脚本
shell脚本写一个自动抢火车票的脚本
412 1
|
监控 Java Spring
Spring Cloud Turbine(集群监控)
简介: Turbine是聚合服务器发送事件流数据的一个工具,Hystrix的监控中,只能监控单个节点,实际生产中都为集群,因此可以通过Turbine来监控集群下Hystrix的metrics情况Turbine的github地址:https://github.com/Netflix/Turbine 使用场景 在复杂的分布式系统中,相同服务的结点经常需要部署上百甚至上千个,很多时候,运维人员希望能够把相同服务的节点状态以一个整体集群的形式展现出来,这样可以更好的把握整个系统的状态。
4527 0
|
数据采集 监控 数据挖掘
基于labview的智能大棚监控系统-上位机
基于labview的智能大棚监控系统-上位机
436 0
下一篇