소스 bash 스크립트에서 디버그 모드를 실행하는 방법은 무엇입니까?

소스 bash 스크립트에서 디버그 모드를 실행하는 방법은 무엇입니까?

현재 두 개의 파일이 있습니다. 하나는 기본 기능이고 다른 하나는 핵심 로직입니다. 메인 함수는 함수처럼 코드 로직과 접근 권한을 얻습니다. 하지만 내 질문은 코드 논리에 문제가 있는 것입니다. 디버그 모드에서 어떻게 볼 수 있습니까? 아래는 예시입니다.

코드 논리

function logic() {
    #!/bin/bash
     if [[ -f /tmp/sample.txt ]]; then
        echo "hello world"
     fi
}

주요 기능 파일

#!/bin/bash
if [[ -f /tmp/test.txt ]] ; then
      logic
      echo "Done"
fi

출력을 실행할 때:

sh -x myscript.sh

++ [[ -f /tmp/test.txt ]]
hello world      ## I need debug output here itself.
++ echo "Done"

답변1

함수를 호출하기 전에 파일을 가져와야 합니다.

#!/bin/bash
source /path/to/codeLogic.sh
if [[ -f /tmp/test.txt ]] ; then
      logic
      echo "Done"
fi

그런 다음 디버그 모드에서 실행합니다.

sh -x myscript.sh
+ source /path/to/codeLogic.sh
+ [[ -f /tmp/test.txt ]]
+ logic
+ [[ -f /tmp/sample.txt ]]    ---> this is the execution part of logic function
+ echo 'hello world'
hello world
+ echo Done
Done

관련 정보