Qualquer coisa que seja impressa pela função pode ser capturada se você capturar o fluxo de saída correto. Portanto, a maneira mais fácil de imprimir algo e salvar alguma outra saída é redirecionar a saída supérflua para o erro padrão:
function FUNCTION() {
local LOCAL="value"
echo "$LOCAL"
echo "This function is done now" >&2
}
Outra possibilidade é registrar em um arquivo em vez de imprimir mensagens de log diretamente, por exemplo, usando algo assim:
log() {
printf '%s\n' "$@" > my.log
}
Dito isto, as funções Bash não podem retornar variáveis . O único valor real de "retorno" é o código de saída. Por esse motivo ( e muitos outros ), se você quiser log confiável, valores de retorno, manipulação de exceção e mais você vai querer usar uma linguagem diferente, como Python, Ruby ou Java.