[转帖]linux中的set -e 与set -o pipefail
https://www.cnblogs.com/xingmuxin/p/8431970.html
1、set -e
"Exit immediately if a simple command exits with a non-zero status."
在“set -e”之后出现的代码,一旦出现返回值非零,整个脚本就会立即退出。
2、set -o pipefail
"If set, the return value of a pipeline is the value of the last (rightmost) command to exit with a non-zero status,or zero if all commands in the pipeline exit successfully. This option is disabled by default."
在这个设置执行后,其后面的代码,包括管道命令的返回值,为最后一个非零的命令的返回值,或者当管道内的所有命令都执行成功后返回零。
如下例子所示:
在没有设置set -o pipifail时
|
1
2
3
4
5
6
7
8
9
|
#!/bin.bash# there is no a.test,but have b.testcat a.testecho $?cat b.testecho $?cat b.test | echo "hi"echo $?<br><br>cat a.test | echo "hi"<br>echo $? |
执行结果如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
linux-UMLhEm:/home/test/shell # sh -x tst.sh+ cat a.testcat: a.test: No such file or directory+ echo 11+ cat b.test----this is a test-----+ echo 00+ cat b.test+ echo hihi+ echo 00+ cat a.test+ echo hihicat: a.test: No such file or directory+ echo 00 |
可以看到在执行 cat a.test | echo "hi" 时,返回的是最右边命令执行的结果。
下面设置set -o pipeline,示例如下:
|
1
2
3
4
5
|
set -o pipefailcat b.test | echo "hi"echo $?cat a.test | echo "hi"echo $? |
输出结果如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
+ set -o pipefail+ cat b.test+ echo hihi+ echo 141141+ cat a.test+ echo hihicat: a.test: No such file or directory+ echo 11 |
[转帖]linux中的set -e 与set -o pipefail的更多相关文章
- [转帖]Linux中的15个基本‘ls’命令示例
Linux中的15个基本‘ls’命令示例 https://linux.cn/article-5109-1.html ls -lt 和 ls -ltr 来查看文件新旧顺序. list time rese ...
- [转帖]Linux中buff/cache内存占用过高解决办法
Linux中buff/cache内存占用过高解决办法 https://www.cnblogs.com/rocky-AGE-24/p/7629500.html /proc/sys/vm/drop_cac ...
- [转帖]Linux中的find(-atime、-ctime、-mtime)指令分析
Linux中的find(-atime.-ctime.-mtime)指令分析 https://www.cnblogs.com/zhangjinjin01/p/5505970.html https://w ...
- [转帖]Linux 中的零拷贝技术,第 2 部分
Linux 中的零拷贝技术,第 2 部分 https://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy2/index.html Linux 中 ...
- [转帖]Linux 中的零拷贝技术,第 1 部分
Linux 中的零拷贝技术,第 1 部分 https://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy1/index.html 引言 传统的 ...
- [转帖]Linux中awk工具的使用
Linux中awk工具的使用 2018年10月09日 17:26:20 谢公子 阅读数 2170更多 分类专栏: linux系统安全 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权 ...
- [转帖]linux中systemctl详细理解及常用命令
linux中systemctl详细理解及常用命令 2019年06月28日 16:16:52 思维的深度 阅读数 30 https://blog.csdn.net/skh2015java/article ...
- linux中的set -e 与set -o pipefail
1.set -e "Exit immediately if a simple command exits with a non-zero status." 在“set -e”之后出 ...
- [转帖]NotePad++编辑Linux中的文件
NotePad++编辑Linux中的文件 https://blog.csdn.net/chengqiuming/article/details/78882692 原作者 未经允许不允许转帖 加密自己参 ...
- 转帖:对linux中半增加半连接数量和防止服务器被dos攻击
.增大队列SYN最大半连接数 在Linux中执行命令"sysctl -a|grep net.ipv4.tcp_max_syn_backlog",在返回的"net.ipv4 ...
随机推荐
- 用C实现HashTable
简述HashTable的原理 HashTable是一种数据结构,通过key可以直接的到value,查找值时间总为常数级别O(1). 原理 HashTable底层是使用了数组实现的.数组只要知道了索引, ...
- HTTP 代理服务器的设计与实现(C++)
实验内容 设计并实现一个基本 HTTP 代理服务器.要求在指定端口(例如 8080)接收来自客户的 HTTP 请求并且根据其中的 URL 地址访问该地址 所指向的 HTTP 服务器(原服务器),接收 ...
- reboot详解
linux下reboot命令详解 linux reboot 命令详解 功能说明:重新开机. 语 法:dreboot [-dfinw] 补充说明:执行reboot指令可让系统停止运作,并重新开机. 参 ...
- 多项式(Poly)笔记
开头先扔板子:多项式板子们 定义 多项式(polynomial)是形如 \(P(x) = \sum \limits_{i = 0}^{n} a_i x ^ i\) 的代数表达式.其中 \(x\) 是一 ...
- [Python急救站]含义GUI的学生管理系统
这个管理系统是含有GUI界面的学生管理系统,比较方便. import tkinter as tk class Student: def __init__(self, name, student_id, ...
- 全域Serverless化,华为云引领下一代云计算新范式
本文分享自华为云社区<全域Serverless化,华为云引领下一代云计算新范式>,作者: 华为云PaaS服务小智 . 近日,华为开发者大会2023(Cloud)在东莞成功举办,期间&quo ...
- 【云小课】版本管理发展史之Git+——代码托管
摘要:选择一款版本管理工具,已经被大多数企业作为项目的必要准备工作之一,相信没有一个开发者没有听过Git.SVN这些工具. 今天我们来寻根溯源,扒一扒版本管理的发展史. 版本管理工具之于软件开发,犹如 ...
- 带你了解NB-IoT标准演进
摘要:本文将带大家详细了解NB-IoT标准演进与产业发展. 本文分享自华为云社区<一文带你了解NB-IoT标准演进与产业发展>,作者:万万万. 我们都知道,物联网的场景和手机.电脑在使用的 ...
- 为啥你写的代码老有大串的if/else?
摘要:控制语句,到底何错之有呢? 本文分享自华为云社区<业务代码如何才能不再写出大串的if/else?>,作者: JavaEdge . 控制结构?没错!你最爱的 if.for都是一类坏味道 ...
- JWT token验证后,通过 ThreadLocal 进行传值
Spring Boot JWT 用户认证 JWT token验证后,通过 ThreadLocal 进行传值,在服务层直接使用 Threadlocal 获取当前用户,的Id.姓名,进行行为记录 定义一个 ...