VALUE=<<PERSON
some data
PERSON
echo "$VALUE"
Nenhuma saída.
Um documento aqui é um redirecionamento , você não pode redirecionar para uma variável.
Quando a linha de comando é analisada, os redirecionamentos são tratados em uma etapa separada das atribuições de variáveis. Seu comando é, portanto, equivalente a (observe o espaço)
VALUE= <<PERSON
some data
PERSON
Isto é, ele atribui uma string vazia à sua variável, então redireciona a entrada padrão da string here para o comando (mas não há comando, então nada acontece).
Note que
<<PERSON
some data
PERSON
é válido, como é
<somefile
É apenas que não existe nenhum comando cujo fluxo de entrada padrão possa ser configurado para conter os dados, por isso é apenas perdido.
Isso funcionaria, no entanto:
VALUE=$(cat <<PERSON
some data
PERSON
)
Aqui, o comando que recebe o documento here é cat
e o copia para sua saída padrão. Isto é então o que é atribuído à variável por meio da substituição do comando.
No seu caso, você poderia usar
python -m json.tool <<END_JSON
JSON data here
END_JSON
sem dar o passo extra de armazenar os dados em uma variável.