출력 리디렉션으로 인해 빈 파일이 생성됨

출력 리디렉션으로 인해 빈 파일이 생성됨

편집하고 싶지 않은 쉘 스크립트가 있지만 그 출력을 사용해야 합니다. 쉘에 ./SomeScript.sh -d필요한 출력을 표시합니다.

그러나 출력을 리디렉션하려고 하면 빈 파일이 표시됩니다.

./SomeScript.sh -d > temp 
cat temp

검사 후출력을 리디렉션하면 때때로 빈 파일이 생성되는 이유는 무엇입니까?, 나도 시도했지만 echo $(./SomeScript.sh -d)명령은 아무것도 인쇄하지 않습니다.

grep처음에는 출력에서 ​​한 줄을 얻으려고 했지만 아무것도 반환되지 않았다는 것을 깨닫고 출력을 파일로 리디렉션하려고 시도하여 문제를 깨달았습니다. 왜 이런 일이 발생하는지 아시나요?

답변1

결과가 빈 파일인 경우 ./SomeScript.sh -d > temp(그러나 화면에서 출력을 볼 수 있음) 프로그램이 stout 대신 stderr로 인쇄하고 있음을 의미합니다. 따라서 stderr도 리디렉션해 보십시오. 즉, 다음을 사용하십시오.

./SomeScript.sh -d >temp 2>&1

또는 출력을 두 개의 별도 파일로 보낼 수 있습니다.

./myScript  1>outtemp 2>errtemp 

답변2

사용

./SomeScript.sh -d >> temp

이렇게 하면 스크립트를 한 줄씩 쓰고 덮어쓰는 대신 스크립트의 각 줄이 추가됩니다.

편집: 한번 시도해 보세요

./SomeScript.sh -d &>> temp

stdout뿐만 아니라 stderr도 리디렉션하려는 경우.

답변3

script -c "./SomeScript.sh -flags" temp

이 명령은 나에게 효과적이지만 왜 그런지 잘 모르겠습니다.

답변4

나는 같은 문제가 있었고 이 해결책을 찾았습니다.

./SomeScript.sh -d | tee temp.txt

시간이 절약되길 바랍니다!

관련 정보