명령에서 t 및 f 매개변수를 선언하는 Bash 셸 예

명령에서 t 및 f 매개변수를 선언하는 Bash 셸 예

선언 명령에서 t 및 f 매개변수를 사용하는 이유와 방법을 정확히 이해하지 못합니다. 간단한 그림을 좀 보여주실 수 있나요?

답변1

trace속성은 관련 함수 상속 DEBUGRETURN트랩을 활성화합니다. -f단지 인수가 declare변수가 아니라 함수라는 뜻입니다.

Bash 매뉴얼에는 그렇게 나와 있습니다.기능 정보:

셸 실행 환경의 다른 모든 측면은 다음 예외를 제외하고 함수와 해당 호출자 간에 동일합니다. 함수에 대해 추적 속성이 지정되지 않은 경우 DEBUG 및 RETURN 트랩은 상속되지 않습니다.

게다가설명declare:

-t 각 이름에 대한 추적 속성을 지정합니다. 추적 함수는 호출 셸에서 DEBUG 및 RETURN 트랩을 상속합니다. Trace 속성은 변수에 대해 특별한 의미가 없습니다.

이것이 함수에서 일어나는 일입니다아니요속성 trace:

$ f() { echo a; echo b; }
$ trap 'echo DEBUG: $BASH_COMMAND' DEBUG
$ f
DEBUG: f
a             
b             

기능에 속성이 할당되면 다음과 같은 일이 발생합니다 trace.

$ declare -f -t f
DEBUG: declare -f -t f
$ f
DEBUG: f      
DEBUG: f
DEBUG: echo a 
a      
DEBUG: echo b 
b             

(트랩에 왜 함수 호출이 두 번 나타나는지 모르겠습니다.)

관련 정보