linux – shell重定向位置的区别
这两行之间有什么区别吗?
for i in $(seq 1 10); do echo $i - `date`; sleep 1; done >> /tmp/output.txt for i in $(seq 1 10); do echo $i - `date` >> /tmp/output.txt ; sleep 1; done 因为Robert told me表示第一个只在for循环外部产生I / O OP. 但是,如果我输入tail -f /tmp/output.txt,这行为方式完全相同. 解决方法
如果他们成功,他们也会这样做.但是,如果因任何原因失败,可能会有明显的差异.
第一个: for ...; do # things done >> file 这将在循环完成后重定向到文件.但是,只要Bash决定刷新缓冲区,就可能发生这种情况. 想象一下,在迭代次数3之后出现了一些问题:你无法分辨出文件中存储的内容. 第二个: for ...; do # things >> file done 这将在每次迭代时重定向到文件. 想象一下迭代次数3之后出现问题:您确定前两个循环已正确存储在文件中. 从How to redirect output from an infinite-loop program开始:
另外,从the answer you link开始:
这是有道理的:如果你必须在每个循环上刷新,那么只要它发现方便就让Bash刷新需要更多的时间.每次写一行比划线更容易. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |