Redirecionar a saída de depuração para o erro padrão:
foo () {
echo 'In foo' >&2
VAR="1234"
echo 'Calculated item' >&2
echo "$VAR"
}
RESULT=$(foo)
printf 'RESULT="%s"\n' "$RESULT"
Você pode até mesmo criar uma função de "depuração" dedicada:
debug () {
printf 'DEBUG: %s\n' "$@" >&2
}
foo () {
debug 'In foo'
VAR="1234"
debug 'Calculated item'
echo "$VAR"
}
RESULT=$(foo)
printf 'RESULT="%s"\n' "$RESULT"
Saída:
$ sh script.sh
DEBUG: In foo
DEBUG: Calculated item
RESULT="1234"