myscript.sh
많은 기능이 포함된 bash 스크립트가 있습니다 . 함수를 실행하려면 다음을 작성하세요.
source myscript.sh; myfunction
이러한 기능을 디버깅하는 방법은 무엇입니까?
답변1
디버깅하려는 섹션 앞에 다음 줄을 추가하기만 하면 됩니다.
set -v -x -e
비활성화합니다.
set +v +x +e
답변2
스크립트에서 디버깅을 활성화하고 functrace
.
set -x
set -o functrace
답변3
Bash에서도 사용할 수 있어야 합니다.
$ set -xT
이렇게 하면 함수 추적이 이루어지고
$ set +xT
장애가 있는.
또한 게시된 다른 답변을 참조하면 스크립트/셸 명령 세트의 구문을 확인하지 않는 한 디버깅(상세 모드)에 -v를 사용하지 않는 것이 좋습니다. 때때로 유용한 또 다른 (일반적인) 솔루션은 -n
이 옵션을 조합하여 사용하는 것 입니다 -x
. 이는 실제로 명령 실행의 마지막 단계를 수행하지 않고 스크립트/명령을 "실행"합니다. 이를 통해 불필요한 혼란을 일으키지 않고 쉘 확장 등에서 어려운 버그를 찾을 수 있는 경우가 많습니다.