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.test
cat a.test
echo $?
cat b.test
echo $?
 
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.test
cat: a.test: No such file or directory
echo 1
1
cat b.test
----this is a test-----
echo 0
0
cat b.test
echo hi
hi
echo 0
0
cat a.test
echo hi
hi
cat: a.test: No such file or directory
echo 0
0

 可以看到在执行  cat a.test | echo "hi"   时,返回的是最右边命令执行的结果。

下面设置set -o pipeline,示例如下:

1
2
3
4
5
set -o pipefail
cat 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 hi
hi
echo 141
141
cat a.test
echo hi
hi
cat: a.test: No such file or directory
echo 1
1

  

[转帖]linux中的set -e 与set -o pipefail的更多相关文章

  1. [转帖]Linux中的15个基本‘ls’命令示例

    Linux中的15个基本‘ls’命令示例 https://linux.cn/article-5109-1.html ls -lt 和 ls -ltr 来查看文件新旧顺序. list time rese ...

  2. [转帖]Linux中buff/cache内存占用过高解决办法

    Linux中buff/cache内存占用过高解决办法 https://www.cnblogs.com/rocky-AGE-24/p/7629500.html /proc/sys/vm/drop_cac ...

  3. [转帖]Linux中的find(-atime、-ctime、-mtime)指令分析

    Linux中的find(-atime.-ctime.-mtime)指令分析 https://www.cnblogs.com/zhangjinjin01/p/5505970.html https://w ...

  4. [转帖]Linux 中的零拷贝技术,第 2 部分

    Linux 中的零拷贝技术,第 2 部分 https://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy2/index.html   Linux 中 ...

  5. [转帖]Linux 中的零拷贝技术,第 1 部分

    Linux 中的零拷贝技术,第 1 部分 https://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy1/index.html   引言 传统的 ...

  6. [转帖]Linux中awk工具的使用

    Linux中awk工具的使用 2018年10月09日 17:26:20 谢公子 阅读数 2170更多 分类专栏: linux系统安全   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权 ...

  7. [转帖]linux中systemctl详细理解及常用命令

    linux中systemctl详细理解及常用命令 2019年06月28日 16:16:52 思维的深度 阅读数 30 https://blog.csdn.net/skh2015java/article ...

  8. linux中的set -e 与set -o pipefail

    1.set -e "Exit immediately if a simple command exits with a non-zero status." 在“set -e”之后出 ...

  9. [转帖]NotePad++编辑Linux中的文件

    NotePad++编辑Linux中的文件 https://blog.csdn.net/chengqiuming/article/details/78882692 原作者 未经允许不允许转帖 加密自己参 ...

  10. 转帖:对linux中半增加半连接数量和防止服务器被dos攻击

    .增大队列SYN最大半连接数 在Linux中执行命令"sysctl -a|grep net.ipv4.tcp_max_syn_backlog",在返回的"net.ipv4 ...

随机推荐

  1. kubernetes不同pod之间调用(四)

    kubernetes不同pod之间调用(四) k8s系列 源自我工作上的实际场景,记录于此. kubernetes不同服务间的调用.kubernetes不同容器间的调用.kubernetes不同- 今 ...

  2. Spring表达式语言(SPEL)学习(01)

    算术运算 @Test public void test01() { // 定义解析器 ExpressionParser parser = new SpelExpressionParser(); // ...

  3. 2021-01-26:mysql8.0做了什么改进?

    福哥答案2021-01-26: 2020-01-26:mysql8.0做了什么改进? 帐户管理增加了对角色的支持. 支持原子数据定义语句(atomic DDL). 支持utf8mb4字符集. Inno ...

  4. LeetCode DP篇-背包问题(416、518)

    416. 分割等和子集 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: ...

  5. JDK1.6在生产环境引起的坑

    本文分享自华为云社区<[高并发]记一次JDK1.6在生产环境引起的坑!>,作者: 冰 河 . 最近有朋友遇到一个困惑:他写的程序在测试环境一点问题没有,但是发到生产环境却会频繁出现内存溢出 ...

  6. 你眼中的程序员 VS 程序员眼中的自己,是时候打破代沟了

    摘要:修电脑?格子衫?脱发?程序员被误解了怎么办?如何一句话向父母说明白你的工作? 有人说,你们程序员工作赚钱真简单,电脑上按按键盘就行了,一点也不辛苦. 有人说,程序员不懂生活,就知道天天对着电脑. ...

  7. JDK1.6中String类的坑,快让我裂开了…

    摘要:JVM优化的目标就是:尽可能让对象都在新生代里分配和回收,尽量别让太多对象频繁进入老年代,避免频繁对老年代进行垃圾回收,同时给系统充足的内存大小,避免新生代频繁的进行垃圾回收. 本文分享自华为云 ...

  8. 火山引擎数智平台最新直播活动:ByteHouse技术架构与最佳实践分享

    数据的时效性,正深刻影响着企业的发展.   以大型半导体制造厂商为例,不同于常规工厂生产流水线,半导体制造通用的无人实验室生产模式高度依赖机械臂作业,且对整个生产调度链路中的精密度要求非常高,这背后主 ...

  9. Solon 的多配置文件切换

    比如有配置文件: app.yml app-dev.yml app-pro.yml 可以通过启动参数:-env java -jar demoapp.jar -env=dev

  10. PPT 动画-文字渐入

    插入文字,居中对齐 选中文字,将不透明度调成100%,让文字消失不见