Extrair definições completas de função

1

Dado:

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

Por que eu recebo esta saída (doi2 () e o último} estão faltando):

$ 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 "$@"
    }

e não isso:

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
}

Existe alguma maneira que eu possa dizer ao ksh para deixar os nomes das funções intocados e, assim, me fornecer a definição completa da função?

$ ksh --version
  version         sh (AT&T Research) 93u+ 2012-08-01
    
por Ole Tange 18.07.2018 / 17:16

0 respostas

Tags