Bash 내장 변수 BASH_ARGV 및 BASH_ARGC

Bash 내장 변수 BASH_ARGV 및 BASH_ARGC

74페이지의 bash v5.0 매뉴얼에는 다음 문서(및 유사한 문서 BASH_ARGC)가 있습니다.

BASH_ARGV
현재 bash 실행 호출 스택의 모든 매개변수를 포함하는 배열 변수입니다. 마지막 서브루틴 호출의 마지막 인수는 스택의 맨 위에 있습니다. 초기 호출의 첫 번째 인수는 맨 아래에 있습니다. 서브루틴이 실행되면 제공된 매개변수가 로 푸시됩니다 BASH_ARGV.쉘은 BASH_ARGV확장 디버깅 모드에서만 설정됩니다.(shopt 내장 명령의 extdebug 옵션에 대한 설명은 65 페이지의 섹션 4.3.2 [Shopt 내장 명령]을 참조하십시오). extdebug쉘이 스크립트 실행을 시작한 후에 설정하십시오. 또는 extdebug설정되지 않은 상태에서 이 변수를 참조하면 값이 일관되지 않을 수 있습니다.

특히, 더 알고 싶은 문장은 굵은 글씨로 표시했습니다.

  1. 확장 디버깅 모드를 활성화하는 것 외에 이러한 내장 변수를 사용할 수 있는 방법이 있습니까?다른 각도에서 물어보니 무슨 뜻인가요?가능한위 마지막 문장은 무슨 뜻인가요?

  2. 이러한 내장 변수가 디버깅 전용으로 간주되는 경우(1.에 대한 대답은 '아니오') 특정 함수 호출 내에서 스크립트 명령줄 매개변수에 액세스하는 가장 좋은 방법은 올바른 것입니다(즉, 다른 함수에 의해 호출되는 함수 내에서). 다른 함수 등에 의해 호출됩니다.) 이전에 전역 배열에 저장되었습니까? via를 통해 전달하는 것도 "$@"원칙적으로 가능하지만 때로는 불편할 수 있습니다.

내가 찾은이 관련 답변이것은 의미합니다

shebang(예: #!/bin/bash -O extdebug)에서 또는 다음을 사용하여 shopt(예 : ) shopt -s extdebug확장 디버깅을 켜야 할 수도 있습니다.하지만 bash 4.2_p37에서는 전원을 켜지 않고도 작동합니다.

  1. 보너스 질문입니다.확장 디버깅 모드를 활성화하지 않고도 작동하는 이유는 무엇입니까?

관련 정보