typeset -A está dando erro no script

0

Eu estava usando matrizes associativas no meu script, por isso eu costumava declará-las pelo

typeset -A <array_name> comando, e funcionou bem no prompt do bash

Mas quando eu uso no meu script, recebo o seguinte erro typeset: -A: invalid option typeset: usage: typeset [-afFirtx] [-p] name[=value] ...

Uma solução alternativa também será aceitável para mim.

SIDENOTE: Eu tentei compor -a mas declara uma matriz indexada. Mas eu quero um array associativo.

    
por Munai Das Udasin 13.08.2014 / 10:11

1 resposta

2

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.

    
por 13.08.2014 / 10:40