Массивы и циклы в zsh

Я пытаюсь изучить циклы и манипуляции массивами в zsh .

Скажем, у меня есть два массива в zsh с тем же неизвестным количеством элементов, и каждый из них содержит список путей, например

 LOCAL_ARRAY=($LOCAL_PATH_1 $LOCAL_PATH_2 $LOCAL_PATH_3) REMOTE_ARRAY=($REMOTE_PATH_1 $REMOTE_PATH_2 $REMOTE_PATH_3) 

Я хотел бы перебирать оба массива одновременно с общим индексом, чтобы я мог сделать что-то вроде:

 cd $LOCAL_PATH_i hg pull $REMOTE_PATH_i 

на каждой итерации. Как это сделать в zsh?

Кроме того, я искал управление контуром и массивы в документации zsh, но имел небольшой успех. Есть ли хороший учебник, который вводит основы циклов , массивов и т. Д. В zsh? Что-то для людей с небольшим опытом bash или shell-scripting, но с опытом программирования?

One Solution collect form web for “Массивы и циклы в zsh”

Раздел 15.2.1 «Подстроки массива» говорит, что массивы могут быть индексом с [exp] (где exp – числовое выражение) и что элементы начинаются с индекса 1 (0, если установлен KSH_ARRAYS ).

В разделе 14.3 «Расширение параметров» говорится, что синтаксис ${#array_name} будет расширяться до количества элементов массива.

Раздел 6.3 «Комплексные команды» дает синтаксис для числового цикла (как в C):
for (( initExpr ; testExpr ; stepExpr )) do … done .

Объединяя их все вместе:

 for (( i = 1; i <= $#LOCAL_PATH; i++ )) do ( # subshell to contain the effect of the chdir cd $LOCAL_PATH[i] hg pull $REMOTE_PATH[i] ) done 

Или, если вы используете KSH_ARRAYS , то это:

 for (( i = 0; i < ${#LOCAL_PATH[*]}; i++ )) do ( # subshell to contain the effect of the chdir cd ${LOCAL_PATH[i]} hg pull ${REMOTE_PATH[i]} ) done 

Использование KSH_ARRAYS делает массивы начинаться с индекса 0, требует использования фигурных скобок для выражений массива и интерпретирует $array как $array[0] (требует изменения выражения длины массива). Изменения в синтаксисе, требуемые KSH_ARRAY , также будут работать без KSH_ARRAY , но вам все равно придется настраивать логику для разных диапазонов индексов (от 1 до N от 0 до N-1).

  • Об относительных достоинствах `` $ @ "` и `" $ @ "`
  • Zsh вложенная команда args $ SHLVL ошибка?
  • ^ P не работает в zsh, где я должен смотреть?
  • странное поведение setopt
  • В zsh, в чем смысл идиомы '$ == *'
  • Обнаружить, когда Zsh запущен в подоболочке другой оболочки
  • Как избежать разбора файлов / etc / *
  • Определение слова в ZLE (zsh)
  • Возможно ли прочитать содержимое файла, который был получен с помощью интерактивной оболочки?
  • Когда необходимо включить `emulate -LR zsh` в функцию, вызванную zsh-виджетами?
  • Есть ли способ обойти .zshrc при входе в систему?
  • Interesting Posts

    Прикосновение к тачпаду при наборе текста прерывания Linux

    Настройка initcwnd и initrwnd для постоянного запуска при перезагрузке сетевого менеджера

    Мышь и клавиатура не работают при одновременном использовании

    Соответствовать регулярному выражению между разделителями

    Вручную "требовать" VT

    Понимание использования Inode NTFS-3g

    Найдите самую длинную соответствующую часть с двумя бинарными файлами

    ssl3 mailx и отскок

    Как найти файлы, их имена, имена файлов находятся в одном файле?

    Pipe Viewer – следствие производительности монитора

    Добавьте / удалите рабочую станцию ​​ip в / etc / sysconfig / iptables, а затем запустите перезапуск службы iptables

    минимальные требования к графическому интерфейсу linux

    Есть ли команда grub2, чтобы иметь эффект вытаскивания экрана и вилки?

    Имя интерфейса изменяется при миграции виртуальной машины, но оригинальное имя должно быть действительным

    Как вставить первый столбец во многие файлы + как преобразовать время unix в обычное время

    Linux и Unix - лучшая ОС в мире.