편집하고 싶지 않은 쉘 스크립트가 있지만 그 출력을 사용해야 합니다. 쉘에 ./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
시간이 절약되길 바랍니다!