bash – 分别管道stderr和stdout
发布时间:2020-12-15 21:18:15 所属栏目:安全 来源:网络整理
导读:我想对特定命令的stdout和stderr做不同的事情.就像是 cmd |1 stdout_1 | stdout_2 |2 stderr_1 | stderr_2 其中stdout_x是专门用于stdout的命令,stderr_x专门用于stderr.如果每个命令的stderr都被管道输入到我的stderr命令中,那也没关系,但如果stderr可以严
我想对特定命令的stdout和stderr做不同的事情.就像是
cmd |1 stdout_1 | stdout_2 |2 stderr_1 | stderr_2 其中stdout_x是专门用于stdout的命令,stderr_x专门用于stderr.如果每个命令的stderr都被管道输入到我的stderr命令中,那也没关系,但如果stderr可以严格来自cmd,那就更好了.我一直在寻找可能支持这一点的语法,但我似乎找不到任何东西. 解决方法
您可以使用不同的文件描述符:
{ cmd 2>&3 | stdout_1; } 3>&1 1>&2 | stderr_1 例: { { echo 'out'; echo >&2 'error'; } 2>&3 | awk '{print "stdout: " $0}'; } 3>&1 1>&2 | awk '{print "stderr: " $0}' stderr: error stdout: out 或者使用进程替换: cmd 2> >(stderr_1) > >(stdout_1) 例: { echo 'out'; echo >&2 'error'; } 2> >(awk '{print "stderr: " $0}') > >(awk '{print "stdout: " $0}') stderr: error stdout: out 将stdout和stderr与cmd分开管道. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |