O problema era que o comando grive
estava transmitindo para o fluxo de erros, STDERR (descritor de arquivo 2), que é normalmente usado para transmitir mensagens de erro enquanto o STDOUT (descritor de arquivo 1) é usado para mostrar real (após sucesso) saída de qualquer programa (estritamente falando).
Eu não usei grive
, mas de acordo com suas palavras, o desenvolvedor pode ter usado o STDERR apenas para mostrar qualquer mensagem do comando.
Agora a substituição de comando que você usou:
VARABLENAME=$(command)
salvará o STDOUT de command
a VARABLENAME
, não STDERR. Como resultado, a variável estava vazia e você estava vendo mensagens no terminal.
Eu sugeri:
VARABLENAME="$(command 2>&1)"
isto irá salvar tanto o STDOUT quanto o STDERR para a variável (no seu caso, apenas STDERR, pois não há STDOUT), então você obteria o resultado desejado usando echo "${VARIABLENAME}"
.
Além disso, como não há STDOUT, você pode salvar apenas o STDERR na variável (generalização, true para qualquer programa):
VARABLENAME="$(command 2>&1 >/dev/null)"