bash 완성을 어떻게 디버깅합니까?


14

나는 모두 독립적으로 작동하는 것처럼 보이는 bash 완성 함수를 만들었지 만 탭 완성을 시도하면 예기치 않은 결과를 얻습니다.

bashdb를 연결할 수 있습니까? 그런 다음 무언가를 완성하고 디버그하여 무엇이 잘못되었는지 확인하십시오.


2
내 센트를 추가하려면 set -xin bash를 사용 하여 스크립트를 디버깅해야합니다. 사용 set +x하지 않도록 설정하는 방법.

답변:


6

set -x

당신이 경우 set -x중 하나를 대화 형 세션이나 자동 완성 스크립트 자체에, (거의?) 모든 명령과 그 결과가 출력됩니다. 여기에는 자동 완성 스크립트 내에서 수행 된 작업이 포함됩니다.

그런 다음을 사용하여 다시 아래로 다시 조일 수 있습니다 set +x.

-엑스

각 간단한 명령 (명령, 대소 문자 명령, 선택 명령 또는 명령의 산술)을 확장 한 후 PS4의 확장 값을 표시 한 다음 명령과 해당 확장 인수 또는 관련 단어 목록을 표시합니다.

-Bash 매뉴얼 # 세트 내장


2

bash 완성 함수에서 로그 / 출력하십시오. 로켓 과학이 없을 가능성이 높기 때문에이 작업은 매우 쉽습니다. bashdb를 연결할 수는 있지만 불필요하다고 느낍니다 ...


bashdb를 연결하는 것이 훨씬 간단했으며 스크립트에 로그 문을 추가하는 것보다 빠릅니다. 그러나 가능한지 모르겠지만 답변이 없으면 불가능하다는 것을 알 수 있습니다. 제안한대로 파일에 상태를 로깅하여 문제를 해결할 수 있었지만 로깅 정보를 터미널에 출력하는 것은 완료 작업을 할 때 도움이되지 않습니다.
Dan Midwood

3
@DanMidwood : 두 개의 터미널을 사용하십시오 (예 : 화면 + 분할). 하나에서 두 번째로 tail -f로그를 완료 하십시오.
choroba

@ choroba : 좋은 하나. : D
Tamara Wijsman 2014 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.