Quiero acceder a la variable de índice de matriz mientras hago un bucle a través de una matriz en mi script de shell bash.
myscript.sh#!/bin/bash
AR=('foo' 'bar' 'baz' 'bat')
for i in ${AR[*]}; do
echo $i
done
El resultado del script anterior es:
foo
bar
baz
bat
El resultado que busco es:
0
1
2
3
¿Cómo modifico mi script para lograr esto?
bash
shell
shell-script
Cortacésped
fuente
fuente
"${array[*]}"
lugar de"${array[@]}"
. Usar en*
lugar de@
más o menos lo trata como una cadena en lugar de una matriz.Respuestas:
Puede hacerlo utilizando la Lista de claves de matriz . Desde la
bash
página del manual:Por su ejemplo:
Esto resulta en:
Tenga en cuenta que esto también funciona para índices no sucesivos:
Esto resulta en:
fuente
printf "$i=(${AR[i]})\n"
oecho "$i=(${ARi]})"
ambos dan un poco más al mostrar cómo obtener key & var, pero estrictamente hablandoecho "$i"
habría respondido al OP. El resto es "bash fu" :)Además de la respuesta de jordanm, también puede hacer un
C
ciclo similar enbash
:fuente
puedes hacer algo como esto:
salida:
fuente