bash脚本小技巧之一:set -e和set -u-程序员宅基地

技术标签: python  shell  

       今天一朋友问我一个bash脚本在开头出现了set -u 和 set -e 两行是什么作用,我也纳闷没见过这样的写法啊于是百度了一下,才发现原来这两个bash的选项这么有用,这边记录下方便以后查阅。

       set -e     设置该选项后,当脚本中任何以一个命令执行返回的状态码不为0时就退出整个脚本(默认脚本运行中某行报错会继续往下执行),这样就不必设置很多的判断条件去判断每个命令是否执行成功,特别那些依赖很强的地方,脚本任何一处执行报错就不应继续执行其他语句的时候就特别有用,之前写的一些像LAMP的安装脚本就深有体会。。。

       简单的写个脚本测试下,在不使用set -e 的时候执行如下脚本:

11

       执行结果,可以看到报错后继续运行,输出了 End 

12

       在脚本中加入set -e 后,执行结果:

13

       set -u     设置该选项后,当脚本在执行过程中尝试使用未定义过的变量时,报错并退出运行整个脚本(默认会把该变量的值当作空来处理),这个感觉也非常有用,有些时候可能在脚本中变量很多很长,疏忽了把某个变量的名字写错了,这时候运行脚本不会报任何错误,但结果却不是你想要的,排查起来很是头疼,使用这个选项就完美的解决了这个问题。

      同样来简单测试下:

1

       在不加set -u 时,执行不会有任何问题,会把$GOOD变量当作空值来处理:

2

       当加上set -u时的运行结果:

3

 

       还有其他一些可以设置的bash选项,个人感觉作用不是很大,就不再一一介绍,有兴趣的可以百度。


转载于:https://my.oschina.net/goopand/blog/465514

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34414196/article/details/91892913

智能推荐

Mybatis插件原理和PageHelper结合实战分页插件(七)-程序员宅基地

文章浏览阅读96次。今天和大家分享下mybatis的一个分页插件PageHelper,在讲解PageHelper之前我们需要先了解下mybatis的插件原理。PageHelper的官方网站:https://github.com/pagehelper/Mybatis-PageHelper一、Plugin接口mybatis定义了一个插件接口org.apache.ibatis.plugin.Interceptor,任何自定..._resultsethandler pagehelp

【node】nodemailer 实现邮件发送_import nodemailer from 'nodemailer';-程序员宅基地

文章浏览阅读450次。nodemailer 邮件发送功能可用于用户注册等业务场景,高效、低成本。我们这里使用腾讯的邮件服务。登录QQ邮箱,点击设置-帐户,开启SMTP服务并生成制授权码,复制授权码,后面要用。这个授权码要安全保存,不要外泄。配置文件 config.js//config.jsexport default { smtp: { get host() { retu..._import nodemailer from 'nodemailer';

关于基于智能制造的综合监控平台的一点思考_环境适应性和扩展性-程序员宅基地

文章浏览阅读1.2k次。上周五参加了一个研讨会,该会议围绕未来信号产品的发展方向这一主题,介绍了研祥公司的产品线,主要是工控机系列,从这些产品的性能和指标中,我想到了我们公司的产品,有了一些思考。嵌入式系统在轨道交通中的应用中国有句古话,要致富,先修路。自古以来,城市经济的发展就离不开交通运输。中国高铁的发展经历了3个阶段:国外引进,消化吸收,走向世界。随着“智慧城市”,“一带一路”的提出。中国高铁已经正式迈出国_环境适应性和扩展性

5. 数据预处理_5.数据预处理-程序员宅基地

文章浏览阅读206次。数据预处理文章目录 数据预处理1. 处理缺失数据滤除缺失数据填充缺失数据2. 数据转换移除重复数据利用函数或映射进行数据转换替换值:replace重命名轴索引离散化和面元划分检测和过滤异常值排列和随机采样计算指标/哑变量3. 字符串操作字符串对象方法正则表达式pandas的矢量化字符串函数案例:食谱数据库在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载、清理、转换以及重塑。pandas和内置的Python标准库提供了一组高级的、灵活的、快速的工具,可以让你轻松地将数据规整为想要的格式。1._5.数据预处理

spring 、spring mvc、mybaits整合_spring+spring mvc +mybaits-程序员宅基地

文章浏览阅读202次。一,spring介绍使用1、Spring是一个开源的轻量级的应用开发框架,其目的是用于简化企业级应用程序开发,降低开发者的开发难度;(简化开发:spring对常用的api,比如对JDBC做了封装,使用spring封装的jdbc访问数据库,就不用考虑获取连接、关闭连接等,极大的简化了代码)2、Spring提供的IoC和AOP应用,可以将组件的耦合度降至最低(即解耦),便于系统日后的维护和升级;..._spring+spring mvc +mybaits

遥感影像16位转8位(python)_python遥感影像16位转int8训练-程序员宅基地

文章浏览阅读2.2k次。遥感影像16位转8位(python)不同于一般的8位数据,数据库中的遥感图像都是16位的无符号整形数据,而且大部分集中在[0,500]的范围内,对于8位的RGB图像来说根本无法显示正确的图像。因此,必须对灰度级进行压缩,从65536个灰度级压缩到256个灰度级范围内。但是,仅仅使用线性压缩是无法解决问题的,因为前面也说过,数据主要集中在[0,500]范围内,即它只占用了前面的几百个灰度级,后面的根本没用到。为此,我们必须丢掉出现概率小的灰度级,保留出现概率大的灰度级范围。****1.读16位图像数据_python遥感影像16位转int8训练

随便推点

【Python】全局变量详解二(修改全局变量值、定义位置和代码结构、命名建议)_python设置全局变量-程序员宅基地

文章浏览阅读1.2w次,点赞5次,收藏21次。全局变量是在函数外部定义的变量(没有定义在某一个函数内),所有函数内部都可以使用这个变量。提示:全局变量是可变的,在其他开发语言中,大多是不推荐使用全局变量的,因为可变范围太大,会导致程序后期不好维护。一、在函数内部修改全局变量的值如果在函数中需要修改全局变量,需要使用global关键字进行声明。global关键字会告诉解释器后面的变量是一个全局变量,再使用赋值语句时,就不会创建局部变量代码体验:# 定义一个全局变量num = 99def demo1():_python设置全局变量

python内置函数01——bool()-程序员宅基地

文章浏览阅读138次。语法参数解释:其中value是要转换的值。如果value为非零、非空的值,bool函数返回True;如果value为零值或者为空值,bool函数返回False。作用:测试一个对象是True还是False,它可以用于判断条件是否成立,或者用于将其他类型的值转换为布尔类型。

uint8_t/uint16_t/uint32_t/uint64_t 等是什么数据类型_unit32_t是什么意思-程序员宅基地

文章浏览阅读1.6w次。转发而来,原文链接为https://blog.csdn.net/mrlixirong/article/details/48416533uint8、uint16、uint32、uint64 这大家可能比较理解unit,unsigned int 嘛uint8,我想很多人也能够理解,其实是unsigned char那么 _t 呢?其实就是 typedef 的意思我们在学习标准的C语言时,..._unit32_t是什么意思

西北民大C语言数组题库,C语言程序设计 实验五 数组 答案《西北民大 电气院》供参习.doc...-程序员宅基地

文章浏览阅读203次。实验 数组一,实验目的:1,掌握一维数组和二维数组的定义,赋值和输入输出的方法.2,掌握字符数组和字符串函数的使用.3,掌握与数组有关的算法(特别是排序算法).二,实验准备:1,复习数组的基本知识.2,复习字符串数组的特点和常用的字符串处理函数.3,源程序.三,实验步骤及内容:1,求两3*3二维数组的和:2,编程计算3*3矩阵两条对角线元素之和:#include "stdio.h"main(){ ...

PyQt5之树形控件QTreeWidget使用详解 - 创建、增删节点、遍历、美化等常用功能案例解析_pyqt qtreewidgetitem 自定义-程序员宅基地

文章浏览阅读5.7k次,点赞10次,收藏53次。本文整理了PyQt(PySide) QTreeWidget 的常用方法与使用技巧,包括类继续关系、常用方法与信号,QtreeWidget树的创建、QTreeWidgetItem条目的编辑,树的各种设置、节点的拖拽、双击编辑、弹出式菜单、样式设置与树中信息的填充等,适合不同层次的开发者参考。_pyqt qtreewidgetitem 自定义

MAX6953开发板_单片机max6953开发版的引脚-程序员宅基地

文章浏览阅读1.2k次。 MAX6953是Maxim公司的精密阴极显示驱动,可以通过微型控制器(如PIC或者AVR)。4个5x7 LED显示点阵通过串行I2C控制。这块芯片包含一些特色他可以更加容易的检测显示数据。这些特色中包含了芯片有 104 个 ASCII 字符数据和用户可以自定义24个字符,低功耗休眠模式,在需要的时候段闪模式可以同步驱动显示,测试模式可以点亮所有的LEDs(这样我们可以检测坏的LED),从板子到板子的16步数字明亮控制。 我们可以对每一个MAX6953用2个引脚设置4 bit地址(A_单片机max6953开发版的引脚

推荐文章

热门文章

相关标签