让你有一组命令,有些命令如下:
begin;
echo “Starting Test";
ls;
bad_command -xyz;
end
如果您没有重定向输出或错误,结果是预期的,即
Starting Test
foo.txt
someotherfile.png
someDir
Unknown command: ‘bad_command’
但是,我是通过将最后一行更改为end 2&>1 | open -f -a TextEdit
来将整个块传递给TextEdit,错误在文件中首先出现,并且订单搞砸了。管道到其他命令时也会发生这种情况。为什么会发生这种情况,我该如何防止这种情况?
答案 0 :(得分:1)
您遇到此问题,因为管道将缓冲stdout
而不是stderr
,因此您首先获得stderr
输出。解决此问题的唯一方法是不使用管道,而是将输出重定向到临时文件。然后,使用该文件来完成您需要做的事情。