为什么在这种情况下, ERR信号不能捕捉到?
时间:2011-06-17
来源:互联网
- #!/bin/bash
-
- set -o pipefail
- set -E
-
- trap 'echo "ERR CATCHED in LINE: ${LINENO}"' ERR
-
- ls FILE_NOT_EXIST_00
-
- [b]ls FILE_NOT_EXIST_01 | while read LINE ; do
- echo "in while: $LINE"
- done[/b]
-
- ls FILE_NOT_EXIST_02 | head
-
- exit 0
- ls: cannot access FILE_NOT_EXIST_00: No such file or directory
- ERR CATCHED in LINE: 8
- ls: cannot access FILE_NOT_EXIST_01: No such file or directory
- ls: cannot access FILE_NOT_EXIST_02: No such file or directory
- ERR CATCHED in LINE: 15
我的bash版本是“GNU bash, version 3.2.33(1)-release (i386-redhat-linux-gnu)”
作者: binary_XY.Z 发布时间: 2011-06-17
ls FILE_NOT_EXIST_01 2>&1 | while read LINE
作者: ly5066113 发布时间: 2011-06-17
QUOTE:
ls FILE_NOT_EXIST_01 2>&1 | while read LINE
ly5066113 发表于 2011-06-17 15:18
ly5066113 发表于 2011-06-17 15:18
一样哦, 我的意思是问: 为什么在 ls FILE_NOT_EXIST_01 | while 这种情况下, ls 产生的错误没有被 trap '' ERR 捕捉到~~
作者: binary_XY.Z 发布时间: 2011-06-17
回复 binary_XY.Z
哦,原来是这个意思。
没具体研究过 trap ,但估计是因为管道起了子shell的关系。
哦,原来是这个意思。
没具体研究过 trap ,但估计是因为管道起了子shell的关系。
作者: ly5066113 发布时间: 2011-06-17
QUOTE:
回复 binary_XY.Z
哦,原来是这个意思。
没具体研究过 trap ,但估计是因为管道起了子shell的关系。 ...
ly5066113 发表于 2011-06-17 15:23
哦,原来是这个意思。
没具体研究过 trap ,但估计是因为管道起了子shell的关系。 ...
ly5066113 发表于 2011-06-17 15:23
嗯, 估计是跟sub-shell有关系... 所以我在开头加了 set -E来让错误捕捉也可以继承到sub-shell , 但是在ls FILE_NO_EXIST | while 情况下, ls 产生的错误却不能被捕捉到了, 真是诡异啊..
作者: binary_XY.Z 发布时间: 2011-06-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28