Eu continuo recebendo erro de substituição ruim em scripts bash com matrizes

4

Eu tenho trabalhado em um script Bash usando uma matriz. Eu continuo recebendo esta mensagem, "substituição ruim". Então eu pesquisei o problema no Google e todos os exemplos que surgi supostamente funcionam, mas não no meu computador. Aqui está um script simples que supostamente funciona.

#!/bin/bash
o="12345"
a=o
b=${!a}
echo ${a}
echo ${b}

Mas quando eu corro, eu entendo isso ...

bob@Bobz-DT:~/IStests/test script$ sh test4.sh
test4.sh: 4: test4.sh: Bad substitution

Estou executando o Ubuntu 14.04 e a versão do Bash é ... GNU bash, versão 4.3.11 (1) -release (x86_64-pc-linux-gnu)

Alguém pode me dizer o que está acontecendo ???

    
por Bob-El 08.06.2015 / 05:38

1 resposta

8

Você precisa executar o script como bash e não sh .

Então, corra com

bash test.sh

Por outro lado, você pode definir o execute em seu arquivo fazendo

chmod +x test.sh

depois é só rodar o seu script como

./test.sh

porque você já tem seu interpretador de shell de comando ( shebang ) como sua primeira linha #!/bin/bash .

    
por Terrance 08.06.2015 / 05:49