sh:单独保存stderr和stdout并仍然打印它们

时间:2018-06-06 19:42:07

标签: shell sh posix stdout stderr

我的脚本运行一些函数/外部程序。我需要正常打印输出。 Hovever,我还需要将stdoutstderr分别保存到两个变量/文件中。让我们假设文件在shell中可能更容易。

这是我的脚本模板:

#!/bin/sh

print_things()
{
    echo 'Some normal output'
    echo 'Now errors' 1>&2
    echo 'Normal output again'
    echo 'And more errors' 1>&2
}

print_things | <do magic here>
<possibly a few more lines of magic>

# there will be the rest of the script

exit 0

我想要一个解决方案,保留分为stderr和stdout,但如果它们在某个时刻合并,只要它们被单独保存,它仍然是可以接受的。 输出必须保持行的顺序,因此它必须看起来像:

Now errors
And more errors
Some normal output
Normal output again

执行&#34;魔法&#34;文件夹中应该有两个文件。一个包含整个stdout,另一个包含stderr

保留退出状态而不将其保存到文件的加分点。

我正在寻找符合posix标准的解决方案。

0 个答案:

没有答案