(首先,我一直在寻找一个小时,所以我很确定这不是重复)
我需要编写一个执行1个命令的脚本,1次,然后执行以下操作:
第1点的详细说明,如果我有这样的文件
echo "one"
thisisanerrror
echo "two"
thisisanotherError
我应该看到输出,然后是错误,然后是输出,然后是更多的错误(因此连接是不够的)。
我最接近的是以下内容,它似乎破坏了日志文件:
errs=`((./someCommand.sh 2>&1 1>&3) | tee /dev/stderr ) 3>file.log 2>&3 `
答案 0 :(得分:1)
这可能是一个起点:
How do I write stderr to a file while using "tee" with a pipe?
编辑:
这似乎有效:
((./foo.sh) 2> >(tee >(cat) >&2)) > foo.log
用tee拆分stderr,将一个副本写入stdout(cat)并将另一个写入stderr。之后,您可以获取所有标准输出并将其写入文件。
编辑:将输出存储在变量
中varx=`((./foo.sh) 2> >(tee >(cat) >&2))`
我还看到了附加双引号括起来的命令,但我不知道这可能有什么好处。