![에코와 파이프, 캣의 조합](https://linux55.com/image/58531/%EC%97%90%EC%BD%94%EC%99%80%20%ED%8C%8C%EC%9D%B4%ED%94%84%2C%20%EC%BA%A3%EC%9D%98%20%EC%A1%B0%ED%95%A9.png)
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
로 파이프 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