como exportar matrizes bash? alguma sugestão de solução alternativa?

3

Estou usando a versão bash 4.2.37 no Ubuntu 12.10. Mas desde o ubuntu 12.04 não consigo exportar matrizes no bash ...

Este é um exemplo (digite essas linhas na linha de comando, não é um script):

export astr=(a "b c" d)
declare -p |grep astr
bash
echo ${astr[@]}
declare -p |grep astr

echo não produz nada ...

declare -p |grep astr não produz nada ...

O que estou procurando é uma solução alternativa, porque até onde sei, isso é considerado um bug bash conhecido.

EDIT: btw, se possível, a solução alternativa pode evitar a criação de arquivos de armazenamento temporário para o array, já que posso executar o mesmo script simultaneamente em shells diferentes.

    
por Aquarius Power 15.05.2013 / 02:09

1 resposta

5

Não é um bug com o bash, simplesmente não há uma maneira segura de colocar um array bash no ambiente.

Quanto a soluções alternativas, isso depende do que você está tentando alcançar com a exportação de matrizes em primeiro lugar.

Uma solução possível, em alguns casos, é despejar a matriz em um arquivo e fornecer esse arquivo onde você precisar.

astr=(a "b c" d)
declare -p astr > some_file

bash -c 'source ./some_file; printf "%s\n" "${astr[1]}"'

Outra solução alternativa seria passar a matriz como argumentos para o próximo shell.

    
por geirha 15.05.2013 / 12:32

Tags