에코와 파이프, 캣의 조합

에코와 파이프, 캣의 조합

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하므로 두 명령( 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

관련 정보