标签:redirect bash linux stderr subshell
我确定我遗漏了一些简单的东西,但我正在使用一个执行脚本来调用一些实用程序脚本,我想通过一个管道处理来自实用程序的所有输出.我的问题是实用程序使用stderr报告错误情况,但我无法捕获它以在父脚本中使用.
父脚本:
#!/bin/bash
child 2>&1 >/dev/null
儿童剧本
#!/bin/bash
echo "Print"
echo "Error" 1>&2
我期望的是,孩子的stderr(以及它的所有命令)被重定向到stdout(因此没有输出),但是当我执行parent时,我得到错误echo’d到终端(“Print”被发送到/ dev /空值).
解决方法:
发生的事情是你将stderr重定向到stdout的文件句柄(也许是/ dev / stdout).然后将stdout重定向到/ dev / null.但是,stderr仍然指向/ dev / stdout.
要忽略所有输出,首先重定向stdout,然后将stderr重定向到stdout
child >/dev/null 2>&1
或者,更简单地说,因为你专门使用bash,将stdout和stderr重定向到一起:
child &>/dev/null
标签:redirect,bash,linux,stderr,subshell 来源: https://codeday.me/bug/20190612/1227408.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。