Como posso usar matrizes no bash? [duplicado]

2

Estou tentando isso em 16.04, mas não está funcionando. Retirado de: link .

Edit: Aparentemente isso funciona se você copiar e passar para um terminal, mas não em um arquivo de script. Como faço para que ele funcione da mesma maneira em um arquivo .sh?

declare -a arr=("element1" "element2" "element3")

for i in "${arr[@]}"
do
   echo "$i"
done

Eu obtenho

old.sh: 2: old.sh: Syntax error: "(" unexpected

Se eu tirar os colchetes, recebo

old.sh: 2: old.sh: declare: not found
old.sh: 5: old.sh: Bad substitution
    
por answerSeeker 15.05.2017 / 05:09

1 resposta

4

Funciona se você adicionar a linha crunchbang na extremidade superior do script para forçar o interpretador de shell a usar a sintaxe bash e não usar como padrão a sintaxe sh antiga. (Isso funciona para mim também sem a linha crunchbang, mas por muitas razões é uma boa idéia usar uma linha de crunchbang.)

Eu criei o arquivo arraytest .

#!/bin/bash

declare -a arr=("element1" "element2" "element3")

for i in "${arr[@]}"
do
   echo "$i"
done

Em seguida, tornei-o executável e executei-o.

chmod ugo+x arraytest

$ ./arraytest
element1
element2
element3
    
por sudodus 15.05.2017 / 05:53