`bash -x`는 무엇입니까?

최근 동료가 내 bash 스크립트를 디버깅하지 않고 디버깅 할 수있는 bash -x를 소개했습니다. echo $foo 경로.

$ bash -x hello-world.sh + echo "Hello World" Hello World 

내부적으로-bash는이를 어떻게 수행합니까? man bash를 확인했는데 인터프리터를 호출 할 때 -x 플래그를 언급했습니다. -x 환경 또는 기타 문제에서 디버깅 될 항목과 디버깅되지 않을 항목에 대한 개요입니다.

답변

-x-oxtrace를 설정하는 것과 동일합니다. div> 옵션을 bash로. bash 맨 페이지 사본에서 :

간단한 명령 을 확장 한 후 for 명령, case 명령, select 명령 또는 산술 for 명령, PS4 의 확장 된 값을 표시 한 다음 명령과 확장 된 인수를 표시합니다. ts 또는 관련 단어 목록.

나는 이것에 대해 많은 “고장난”이 있다고 생각하지 않습니다. 실행하는 각 명령을 인쇄합니다. 쉘 스크립트에서 “stderr 출력을 구문 분석하는 경우 명령이 stderr에 인쇄되기 때문에 이것이 엉망이 될 수 있습니다. (일명 파일 설명자 2), 극단적 인 경우처럼 보입니다.

(조건부로 스크립트 내부 또는 대화 형 쉘 세션에서 set -x를 사용하여 활성화 할 수 있습니다. 다시 켜려면 set +x를 사용하세요.)

댓글

  • 감사합니다. . set help-x Print commands and their arguments as they are executed. 라고만 말합니다. ' unset 현재 셸에서.
  • @sherrellbc : set help 위치 매개 변수를 단어 help 및 ' 아무것도 출력하지 않습니다. help set

및 t 목록 끝에 Using + rather than - causes these flags to be turned off.

가 표시됩니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다