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.csv
into cat temp.csv >> final.csv
,因此这两个命令 (echo
和cat
) 并行运行。
因此,最终的结果取决于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