c=('a' 'c')
n=(3 4 )
for i in $(seq 0 $((${#c[*]}-1)))
do
echo ${c[i]} ${n[i]}
done
Cela peut parfois être plus pratique.
Pour expliquer la ugly
partie, comme indiqué dans les commentaires:
seq 0 2 produit la séquence de nombres 0 1 2. $ (cmd) est une substitution de commande, donc pour cet exemple la sortie de seq 0 2
, qui est la séquence de nombres. Mais quelle est la limite supérieure, la $((${#c[*]}-1))
?
$ (( ${#c[*]}-1
quelque chose )) est une expansion arithmétique, donc $ ((3 + 4)) vaut 7 etc. Notre expression est donc quelque chose - 1. Assez simple, si nous savons ce que ${#c[*]}
c'est.
c est un tableau, c [*] est juste le tableau entier, $ {# c [*]} est la taille du tableau qui est 2 dans notre cas. Maintenant, nous annulons tout: for i in $(seq 0 $((${#c[*]}-1)))
c'est for i in $(seq 0 $((2-1)))
c'est for i in $(seq 0 1)
c'est for i in 0 1
. Parce que le dernier élément du tableau a un index qui est la longueur du tableau - 1.