내 생각에는 bash가 스크립트에 문제가 있는 오류 메시지를 정확하게 알려주는 데 꽤 나쁜 것 같습니다. 예를 들어, "953행에서 잘못된 EOF"라는 메시지가 자주 표시됩니다. 이게 뭐야?진짜의미 행 127에 하나가 누락되었습니다. fi
또는 또 다른 고전은 "-bash: line 60: 예상치 못한 토큰 '('" 근처의 구문 오류입니다. 이것은 무엇입니까?진짜즉 , bash 오류가 실제 문제가 없는 60행을 가리키는 것을 제외하고는 mything() {}
739행에서 내 기능을 별칭으로 다시 선언했습니다 (그래서 739행에서 범인을 찾는 데 시간이 걸렸습니다).alias mything=
가장 인기 있는 "bash 디버깅" 도구를 VS Code에 로드하려고 했지만 작동하지 못했습니다. (F5를 눌러 실행한 다음 "디버거 선택"이라는 상자가 나타나서 bash 디버깅을 선택했지만 아무런 반응도 없었습니다.) 코드를 대화형으로 실행할 수 있는 온라인 도구를 사용해 보고 디버깅에 도움이 될 수 있다고 말했지만 그것도 도움이 되지 않았습니다. 저는 PowerShell을 조금 사용했는데 문제의 원인을 보고하는 데 훨씬 더 나은 작업을 수행했습니다. bash 스크립트를 더 잘 디버깅할 수 있는 방법(동일한 이름으로 다시 선언된 함수 및 별칭과 같은 문제에 대해 스크립트를 스캔할 수 있는 github 또는 온라인의 도구 또는 스크립트 분석 도구)이 있습니까?
답변1
독일어 쉘 스크립트에서 이 간단한 쉘 중단점 디버거를 찾았습니다.책. 디버깅을 시작하려는 위치에 다음 두 줄을 추가하고 Enter 키를 눌러 단계별로 실행하거나 런타임에 변수와 함수를 평가할 수 있습니다.
read var # set simple breakpoint
echo -e "dbg> \c"; read cmd; eval $cmd
스크립트 실행
$ dbg> doSomethingFunction
$ dbg> echo $SOME_VAR
또는 과거에는 set -x
프롬프트 변수를 사용하고 수정하는 것이 도움이 되었습니다.PS4
PS4='+ ${BASH_SOURCE##*/}.${LINENO} ${FUNCNAME}: '