Então a entrada literal é esta:
$ output='{
> "test": "Hello
> There!"
> }'
$ echo "$output" | jq -r ".test"
parse error: Invalid string: control characters from U+0000 through U+001F must be escaped at line 3, column 7
JSON não possui sequências de várias linhas. Então, se você está obtendo este valor literal da API, é um bug da API, e deve ser corrigido no servidor.
Como você diz que a API realmente retorna algo como {"test": "Hello\nThere!"}
, o problema deve ser com seus comandos, porque isso funciona com o jq 1.5 no Bash 4.4.23:
$ output='{"test": "Hello\nThere!"}'
$ echo "$output" | jq -r ".test"
Hello
There!
eval
(que é ruim), echo -e
e outros comandos especiais podem resultar na decodificação de caracteres com escape. Tente usar printf '%s' "$output"
. Mais informações sobre o seu ambiente seriam necessárias para depurar isso.