()对简单代码行有什么影响?

时间:2016-03-22 15:16:57

标签: linux bash shell

我是shell脚本的新手。我在下面有这个代码,我不知道它们之间的区别。我搜索了优先运算符(),我无法弄清楚它在下面的这一行上有什么不同。

stdbuf -o 0 -e 0 ../../<program> <input file> &> OutputFile.txt &

( stdbuf -o 0 -e 0 ../..<program> <input file> & ) &> OutputFile.txt

提前感谢您的回答。

2 个答案:

答案 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

两者产生相同的结果,但第二种更短,更清洁,更容易修改。