c=('a' 'c')
n=(3 4 )
for i in $(seq 0 $((${#c[*]}-1)))
do
echo ${c[i]} ${n[i]}
done
A volte potrebbe essere più utile.
Per spiegare la uglyparte, come notato nei commenti:
seq 0 2 produce la sequenza di numeri 0 1 2. $ (cmd) è la sostituzione del comando, quindi per questo esempio l'output di seq 0 2, che è la sequenza numerica. Ma qual è il limite superiore, il $((${#c[*]}-1))?
$ ((qualcosa)) è l'espansione aritmetica, quindi $ ((3 + 4)) è 7 ecc. La nostra espressione è ${#c[*]}-1, quindi qualcosa - 1. Abbastanza semplice, se sappiamo cos'è ${#c[*]}.
c è un array, c [*] è solo l'intero array, $ {# c [*]} è la dimensione dell'array che è 2 nel nostro caso. Ora ripristiniamo tutto: 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. Perché l'ultimo elemento dell'array ha un indice che è la lunghezza dell'array - 1.