c=('a' 'c')
n=(3 4)
for i in $(seq 0 $((${#c[*]}-1)))
do
echo ${c[i]} ${n[i]}
done
иногда может быть более удобно.
Для объяснения ugly
части, как было отмечено в комментарии:
Seq 0 2 производит последовательность чисел 0 1 2 $ (CMD) является команда замены, так что для данного примера с выходом seq 0 2
, которая является числовой последовательностью. Но какова верхняя граница, $((${#c[*]}-1))
?
$ ((somthing)) является арифметическим расширением, поэтому $ ((3 + 4)) равно 7 и т. Д. Наше выражение ${#c[*]}-1
, поэтому что-то - 1. Довольно просто, если мы знаем, что такое ${#c[*]}
.
c является массивом, c [*] является всего массивом, $ {# c [*]} - это размер массива, который равен 2 в нашем случае. Теперь мы откатываем все обратно: for i in $(seq 0 $((${#c[*]}-1)))
is for i in $(seq 0 $((2-1)))
is for i in $(seq 0 1)
is for i in 0 1
. Поскольку последний элемент массива имеет индекс, который является длиной массива - 1.
Исходя из питона фона это очень полезный вопрос на самом деле! –
глядя на это четыре года спустя, я задаюсь вопросом, нет ли лучшего способа сделать это. О, мой бог. – Giszmo