echo、pipe 和 cat 的组合

echo、pipe 和 cat 的组合

temp.csv我的脚本中有一个名为中间步骤之一的文件名

echo "some info" > final.csv | cat temp.csv >> final.csv

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 

这个修改会有帮助吗?

答案1

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

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

答案2

|平均值pipe== 前一个命令的输出通过管道传送到下一个命令输入。如果您使用> final.csv将输出重定向echo到文件中并且没有任何内容可以通过管道传输。因此,为了纠正您的错误,请单独使用您上面提供的 2 个命令,或者如果您愿意,可以使用管道

echo "some info" | cat - temp.csv > final.csv

其他也同样做

cat - temp.csv <<<"some info" > final.csv

相关内容