echo、pipe 和 cat 的组合

Ara*_*ind 5 shell pipe io-redirection

temp.csv在我的脚本中调用了一个文件名,其中一个中间步骤是

echo "some info" > final.csv | cat temp.csv >> final.csv
Run Code Online (Sandbox Code Playgroud)

有时文件final.csv是在没有数据的情况下创建的temp.csv(当它通过调度程序运行时)。然后,当我重新运行该作业时,就会final.csv按照我的预期创建。

为什么会这样(命令中究竟发生了什么echo "some info" > final.csv | cat temp.csv >> final.csv)?
如果我按以下方式替换命令:

echo "some info" > final.csv ; cat temp.csv >> final.csv 
Run Code Online (Sandbox Code Playgroud)

这个修改会有帮助吗?

Ant*_*hon 4

您正在将输出通过管道传递到echo "some info" > final.csvinto cat temp.csv >> final.csv,因此这两个命令 (echocat) 并行运行。

因此,最终的结果取决于final.csv安排的节目。您想要做的是将其替换|;. 然后该echo命令将运行直到完成,然后才cat开始。

  • @confused00他们为什么不呢,后一个只需要前者完成,就能够完成自己。它可以并行处理它所获得的内容。 (2认同)