temp.csv
私のスクリプトには、中間ステップの1つというファイルがあります。
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
をにパイプcat temp.csv >> final.csv
するので、2つのコマンド(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