Shell - 将stderror传递给第二个shell脚本并使用它

时间:2015-11-17 10:12:06

标签: linux shell stderr

我想执行一个shell脚本,并将stderr传递给第二个脚本。如何在shell2.sh中从shell1.sh访问stderr并读取数据以找到其中的一些文本?

sh shell1.sh | sh shell2.sh

2 个答案:

答案 0 :(得分:2)

在将其汇总到您的其他程序之前,只需将stderr重定向到stdout(使用2>&1):

sh shell1.sh 2>&1 | sh shell2.sh

无论通过stdout进入管道的是什么,都会通过stdin退出管道,这样您的其他程序就会看到原来的stdoutstderr stdin

如果您对第一个程序的(原始)stdout不感兴趣,只需将其重定向到/dev/null

sh shell1.sh 2>&1 >/dev/null | sh shell2.sh

请注意,程序只有一个输入渠道(stdin),因此,一旦您将stderr重定向到stdout,就无法区分原始stdout <1}}和stderr在你的管道计划中。

答案 1 :(得分:1)

您可以使用这种方式仅将stderr 传递给RHS命令而忽略stdout:

sh shell1.sh 2>&1 >/dev/null | shell2.sh

2>&1stderr重定向到stdout>/dev/null将stdout重定向到null