[bash] bash는 함수의 정의를 보여줄 수 있습니까?

bash에서 bash 함수의 정의를 보는 방법이 있습니까?

예를 들어 함수를 정의했다고 가정 해보십시오. foobar

function foobar {
    echo "I'm foobar"
}

나중에 foobar실행 되는 코드를 얻는 방법 이 있습니까?

$ # non-working pseudocode
$ echo $foobar
echo "I'm foobar"



답변

사용하십시오 type. 만약 foobar예를 들어, 당신에 정의되어 있습니다 ~/.profile:

$ type foobar
foobar is a function
foobar {
    echo "I'm foobar"
}

이것은 무엇인지 알아 내고 그것이 foobar함수로 정의되면 declare -fpmohandras가 설명하는대로 호출합니다 .

함수 본문 (예 sed: 코드) 만 인쇄하려면 다음을 사용하십시오 .

type foobar | sed '1,3d;$d'


답변

선언을 사용하여 bash에서 함수 정의를 표시 할 수 있습니다. 예를 들면 다음과 같습니다.

declare -f foobar


답변

set | sed -n '/^foobar ()/,/^}/p'

이것은 기본적으로 함수 이름 foobar ()로 시작하고}로 끝나는 set 명령의 행을 인쇄합니다.


답변

set | grep -A999 '^foobar ()' | grep -m1 -B999 '^}'

foobar는 함수 이름입니다.


답변