호출된 bash 함수의 이름을 가져오거나 반영하는 방법은 무엇입니까? [복사]

호출된 bash 함수의 이름을 가져오거나 반영하는 방법은 무엇입니까? [복사]

아직 해결책을 찾지 못했습니다. 누구에게 조언이 있습니까?

나는 때때로 쉘 스크립트로 bash 함수를 작성하고, 단지 디버깅을 위해서가 아니라 스크립트를 장황하게 유지하는 것을 좋아합니다. 그래서 때로는 호출된 bash 함수의 "이름"을 스크립트에서 "변수"로 표시하고 싶을 때가 있습니다.

내가 가끔 하는 일은 함수 이름이 포함된 일반 변수를 설정하는 것뿐입니다. 이와 같이:

test ()
{
    funcName=test
    echo "function running..."
    echo "\$0 is : $0"
    echo "function name is : $funcName"
}

그러나 이것은 좀 어리석은 일이다.

더 좋은 게 있나요?

답변1

때로는 읽는 것만으로도 충분합니다 man bash.

기능 이름

현재 실행 중인 호출 스택에 있는 모든 셸 함수의 이름을 포함하는 배열 변수입니다. 인덱스 0의 요소는 현재 실행 중인 쉘 함수의 이름입니다. 맨 아래 요소(인덱스가 가장 높은 요소)는 "main"입니다. 이 변수는 쉘 함수가 실행될 때만 존재합니다. FUNC-NAME에 대한 할당이 잘못되었으며 오류 상태를 반환합니다. FUNCNAME이 설정되지 않으면 나중에 재설정되더라도 특수 속성이 손실됩니다.

사용 예:

#!/usr/bin/env bash

func()
{
    echo I am inside "$FUNCNAME"
}

foo()
{
    echo I am inside "$FUNCNAME"
}

func
foo

관련 정보