Eu quero acessar a variável de índice da matriz durante um 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 procuro é:
0
1
2
3
Como altero meu script para conseguir isso?
bash
shell
shell-script
Mowzer
fonte
fonte
"${array[*]}"
vez de"${array[@]}"
. Usar em*
vez de@
mais ou menos trata-o como uma sequência em vez de uma matriz.Respostas:
Você pode fazer isso usando a Lista de chaves da matriz . Na
bash
página do manual:Para o seu exemplo:
Isto resulta em:
Observe que isso também funciona para índices não sucessivos:
Isto resulta em:
fonte
printf "$i=(${AR[i]})\n"
ouecho "$i=(${ARi]})"
ambos dão um pouco mais, mostrando como obter key & var, mas, estritamente falandoecho "$i"
, teria respondido ao OP. O resto é "fu bash" :)Além da resposta de jordanm, você também pode fazer um
C
loop semelhante embash
:fonte
você pode fazer algo assim:
resultado:
fonte