전체 함수 정의 추출

전체 함수 정의 추출

반면:

$ cat test.ksh
doit() {
    doi1() {
        echo doi1 "$@"
    }
    doi2() {
        echo doi2 "$@"
    }
    doi1 a
    doi2 b
}
doit
functions doit
typeset -f doit

이 출력이 나타나는 이유는 무엇입니까(doi2() 및 마지막 }이 누락됨):

$ perl -e '$a=join("",<>);system("ksh","-c",$a)' test.ksh
doi1 a
doi2 b
doit() {
    doi1() {
        echo doi1 "$@"
    }
 {
        echo doi2 "$@"
    }
doit() {
    doi1() {
        echo doi1 "$@"
    }
 {
        echo doi2 "$@"
    }

대신에:

doi1 a
doi2 b
doit() {
    doi1() {
        echo doi1 "$@"
    }
    doi2() {
        echo doi2 "$@"
    }
    doi1 a
    doi2 b
}
doit() {
    doi1() {
        echo doi1 "$@"
    }
    doi2() {
        echo doi2 "$@"
    }
    doi1 a
    doi2 b
}

ksh에게 함수 이름을 변경하지 않고 유지하여 완전한 함수 정의를 제공하도록 지시할 수 있는 방법이 있습니까?

$ ksh --version
  version         sh (AT&T Research) 93u+ 2012-08-01

관련 정보