Esse é o erro gerado pelo Bash 3 para typeset -A
. Matrizes associativas foram adicionadas no Bash 4 e não estão no Bash 3.2 e anterior.
Parece que seu script está sendo executado com uma versão diferente do Bash que você está usando como seu shell. Se você estiver na mesma máquina em ambos os casos, terá várias versões instaladas e provavelmente poderá selecionar uma com um caminho diferente. Se você estiver em uma máquina diferente executando o script, poderá instalar uma versão mais recente, mas, caso contrário, você estará sem sorte para obter suporte direto no Bash.
zsh
suporta matrizes associativas desde versões muito antigas, portanto, se você tiver essa disponibilidade, provavelmente poderá migrar seu script sem muito trabalho. Se você não conseguir fazer isso, poderá falsificá-lo com matrizes comuns e grep
, ou usando ${!prefix@}
e um conjunto de variáveis ordinárias, que está disponível em versões mais antigas do Bash. ${!prefix@}
se expande para os nomes de todas as variáveis cujos nomes começam com prefix
, que você pode usar em combinação com diversas variáveis prefix_key1
, prefix_another
para obter a maioria dos comportamentos de matrizes associativas.