my1.sh 및 my2.sh 파일이 있습니다.
my1.sh:
.... do something
./my2.sh
my2.sh:
.... do something else
이제 내 문제는 my2.sh의 명령(예: ntfsclone)이 실패하면 화면에 오류 메시지가 인쇄되지 않는다는 것입니다. my2.sh에서 무엇을 시도하더라도 오류 메시지가 나타나지 않습니다.
그래서 내 질문은 내용의 오류 메시지를 화면에 표시하려면 my2.sh로 무엇을 해야 합니까?
답변1
다시 확인하세요. 질문에 쓴 내용에 따르면 ./my2.sh
내부에서 실행할 때 my1.sh
오류 출력을 어디에서나 (사용하여) 리디렉션하지 않습니다 2>somewhere
. 즉, 원래 있던 위치에 정확하게 유지됩니다. 즉, 오류 출력과 ./my2.sh
정확히 동일한 위치에서 오류 출력을 얻어야 한다는 의미입니다 ./mh1.sh
.
테스트하려면 다음을 삽입해 보세요 my1.sh
.
echo "Test error output from my1.sh" >&2
다음의 시작 부분에 삽입하십시오 my2.sh
.
echo "Test error output from my2.sh" >&2
내 생각엔 두 줄의 출력을 얻거나(이 경우 문제가 없음) 둘 중 하나도 얻지 못한다는 것입니다(이 경우 오류 출력을 얻지 못하는 이유는 오류 출력이 다른 곳으로 리디렉션된다는 것입니다 my1.sh
) my2.sh
. .
답변2
각 스크립트 상단에 다음을 배치하여 피드백을 디버깅할 수 있습니다.
set -x
이를 cli에 직접 입력할 수도 있으며 동일한 작업을 수행합니다. 완료되면 +x를 설정하여 비활성화하는 것을 기억하세요.
set +x