Bash equivalente a FUNCNAME no Dash

1

Bash pode imprimir o nome da função atual:

$ bash -c 'g(){ echo $FUNCNAME; }; g'
g

No entanto, o Dash não pode usar FUNCNAME :

$ dash -c 'g(){ echo $FUNCNAME; }; g'

É possível acessar o nome da função atual com o Dash?

    
por Steven Penny 22.02.2016 / 05:15

1 resposta

3

Com quaisquer shells POSIX:

defun() {
  eval "
    $1() {
      FUNCNAME=$1
      $(cat)
    }
  "
}

defun g <<\}
  printf '%s\n' "$FUNCNAME"
}

g

Note que você não pode chamar uma função definida por defun dentro do corpo de uma função definida por defun .

    
por 22.02.2016 / 09:53