Você pode usar awk
para isso:
file=$(declare -F my_bash_func | awk '{print $3}')
Ou use os bash built-ins, leia-os em uma matriz:
func_info=( $(declare -F my_bash_func) )
file=${func_info[2]}
line_number=${func_info[1]}
Mas tenha em atenção que declare -F my_bash_func
output não é muito amigável para os analisadores ... Se o ficheiro que contém a função for originado de um caminho relativo, a saída extdebug
imprimirá apenas um caminho relativo (mesmo que não esteja Além disso, se o caminho tiver espaços ou caracteres não imprimíveis, eles serão preservados na saída (portanto, "3º campo" talvez não esteja correto ...)