Declarei um array associativo somente leitura em um arquivo de script no Debian Gnu/Linux (versão 12.4).
Tal como acontece com uma variável somente leitura, o redirecionamento de erros é feito facilmente como tal,
readonly AQUA_FG="$(tput setaf 87)" 2> /dev/null
readonly GOLD_FG="$(tput setaf 227)" 2> /dev/null
Isso funciona bem, principalmente quando ou se o script é chamado ou colado diversas vezes em uma janela de comando. O,
bash: AQUA_FG: readonly variable
O erro não é exibido na janela de comando.
Se eu fizer uma matriz associativa somente leitura de cores de primeiro plano, como,
readonly -A FORECOLOUR=(
[AQUA]="$(tput setaf 87)"
[GOLD]="$(tput setaf 227)"
) 2> /dev/null
Quando este array é declarado ou colado em uma janela de comando,
bash: FORECOLOUR: readonly variable
É exibido.
Minha pergunta é: esse redirecionamento de erros é possível para matrizes associativas somente leitura ou não estou fazendo algo corretamente?
A mensagem de erro desaparece assim que você mascara as quebras de linha com uma barra invertida e coloca tudo entre aspas simples.
Sua declaração precisa ficar assim:
Mascarar a declaração do array como uma string faz com que toda a declaração reconheça o redirecionamento do erro novamente.