Массивы и циклы в 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
  • Есть ли postexec / predisplay hook для ZSH?
  • Возможно ли прочитать содержимое файла, который был получен с помощью интерактивной оболочки?
  • Как настроить .zshrc для specfic os
  • странное поведение setopt
  • Что делает `zstyle`?
  • Как избежать разбора файлов / etc / *
  • Zsh вложенная команда args $ SHLVL ошибка?
  • Как перечислить все стили в zsh
  • ^ P не работает в zsh, где я должен смотреть?
  • Обнаружить, когда Zsh запущен в подоболочке другой оболочки
  • Interesting Posts

    Arch: эквивалент pactree для AUR

    Монетный двор – не удается войти в «домашний каталог …»

    brasero.toc.bin очень большой – почему?

    Linux Mint 18 Cinnamon по умолчанию загружается в оболочку / командную строку / отключает графический интерфейс

    Почему команда хоста работает для обратного DNS-тестирования, но не иначе?

    В чем разница между «passwd» и «chpasswd»?

    Удалите строки из файла до шаблона, если шаблон не существует

    Расширить раздел на растущий объем

    удаление массовой информации

    Как я могу правильно ввести имя входного файла в find exec?

    VPS, VPN и политическая маршрутизация в Linux

    Как настроить ubuntu / truecrypt, чтобы пользователи могли монтировать тома в случае необходимости и только в том случае, если у них есть соответствующие разрешения для точки монтирования?

    Возможная прошивка

    Сценарий оболочки для захвата одного или нескольких видео Wistia

    gnu параллельно без скрипта с аргументами

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