bash -x
최근 한 동료가 나 에게 방해가 되지 않고 bash 스크립트를 디버깅하는 방법을 보여주었습니다 echo $foo
.
$ bash -x hello-world.sh
+ echo 'Hello World'
Hello World
내부적으로 - bash는 이를 어떻게 달성합니까? 확인해보니 통역사를 호출할 때 해당 플래그가 언급된 것 man bash
같습니다(아닌 것 같나요?) . -x
저는 주로 환경에서 디버깅할 항목과 디버깅하지 않을 항목에 대한 개요 -x
나 기타 질문을 찾고 있습니다.
답변1
-x
xtrace
-o
Bash 옵션 설정 과 동일합니다. bash 맨페이지 사본에서:
따로 확장한 후간단한 명령,~을 위한주문하다,사례주문하다,선택하다명령 또는 산술~을 위한확장된 값을 표시하는 명령PS4, 그 뒤에 명령과 확장 매개변수 또는 관련 단어 목록이 옵니다.
나는 이것에 많은 "문제"가 있다고 생각하지 않습니다. 실행하는 모든 명령을 인쇄합니다. 쉘 스크립트의 출력을 구문 분석하는 경우 stderr
명령이 (일명 파일 설명자 2)에 인쇄되므로 상황이 엉망이 될 수 있지만 stderr
이는 극단적인 경우인 것 같습니다.
(내부 스크립트나 대화형 셸 세션 내에서 이 기능을 조건부로 활성화하여 다시 set -x
켜고 set +x
끌 수도 있습니다.)