Acessando a variável de índice de matriz do loop de script do shell bash

1

Eu quero acessar a variável do índice da matriz enquanto estiver fazendo o loop através de uma matriz no meu script de shell bash.

myscript.sh
#!/bin/bash
AR=('foo' 'bar' 'baz' 'bat')
for i in ${AR[*]}; do
  echo $i
done

O resultado do script acima é:

foo
bar
baz
bat

O resultado que eu procuro é:

0
1
2
3

Como eu altero meu script para conseguir isso?

    
por Mowzer 23.04.2016 / 04:24

1 resposta

2

Adicione um caractere:

#!/bin/bash
AR=('foo' 'bar' 'baz' 'bat')
for i in ${!AR[*]}; do                                                                  ←
  echo "$i"
done

(Adicione um ponto de exclamação ( ! ) à expansão da matriz: ${!AR[*]} .) A partir da página man:

Parameter Expansion

           ︙
    ${!name[@]}
    ${!name[*]}
      List of array keys.  If name is an array variable, expands to the list of array indices (keys) assigned in name.  If name is not an array, expands to 0 if name is set and null otherwise.  When @ is used and the expansion appears within double quotes, each key expands to a separate word.
    
por 23.04.2016 / 04:42