스크립트 내에서 스크립트를 실행할 때 오류를 볼 수 있나요?

스크립트 내에서 스크립트를 실행할 때 오류를 볼 수 있나요?

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

관련 정보