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
. 이것은 실제로 명령 실행의 마지막 단계를 수행하지 않고 스크립트/명령을 "실행"합니다. 이를 통해 원치 않는 대혼란을 일으키지 않고 쉘 확장 등에서 어려운 오류를 포착할 수 있는 경우가 많습니다.