我是shell脚本的新手。我在下面有这个代码,我不知道它们之间的区别。我搜索了优先运算符(),我无法弄清楚它在下面的这一行上有什么不同。
stdbuf -o 0 -e 0 ../../<program> <input file> &> OutputFile.txt &
( stdbuf -o 0 -e 0 ../..<program> <input file> & ) &> OutputFile.txt
提前感谢您的回答。
答案 0 :(得分:1)
第一个示例在<program>
下运行stdbuf
,标准输出和标准错误在后台重定向到OutputFile.txt
(&
)。
第二个在后台的<program>
下运行stdbuf
(&
)所有子shell中的其标准错误,标准输出重定向到{{ 1}}。
答案 1 :(得分:0)
正如在评论中已经说过的那样,(...)
封闭的陈述在subshell
中执行。
想象一下以下片段:
echo 'line1' > /tmp/file
echo 'line2' >> /tmp/file
echo 'line3' >> /tmp/file
使用子shell,您可以重定向整个子shell,因此上面的内容可以写成
(
echo 'line1'
echo 'line2'
echo 'line3'
) >/tmp/file
两者产生相同的结果,但第二种更短,更清洁,更容易修改。