c=('a' 'c')
n=(3 4 )
for i in $(seq 0 $((${#c[*]}-1)))
do
echo ${c[i]} ${n[i]}
done
Às vezes pode ser mais útil.
Para explicar o ugly
parte, conforme observado nos comentários:
seq 0 2 produz a sequência de números 0 1 2. $ (cmd) é a substituição do comando, portanto, para este exemplo, a saída de seq 0 2
, que é a sequência numérica. Mas qual é o limite superior, o $((${#c[*]}-1))
?
$ ((somthing)) é a expansão aritmética, então $ ((3 + 4)) é 7 etc. Nossa Expressão é ${#c[*]}-1
, então algo - 1. Muito simples, se sabemos o que${#c[*]}
é.
c é um array, c [*] é apenas o array inteiro, $ {# c [*]} é o tamanho do array que é 2 em nosso caso. Agora revertemos tudo: for i in $(seq 0 $((${#c[*]}-1)))
é for i in $(seq 0 $((2-1)))
é for i in $(seq 0 1)
é for i in 0 1
. Porque o último elemento na matriz tem um índice que é o comprimento da matriz - 1.