для + array + args

У меня проблема с моим циклом, это то, что я хочу:

for arg do array[index]=(`find $arg -type l -maxdepth $depth -printf "%p\n" `) index++ done fi 

arg – позиционные аргументы, только каталоги

Этот цикл проходит через аргументы и находит символические ссылки, и я хочу, чтобы они хранились в массиве. Если я запускаю скрипт только с одним каталогом, он работает нормально, но когда я вхожу в два или более каталога, это не работает. Любая помощь ?

Я хочу работать так, например:

Есть два аргумента, каждый из которых является каталогом.

Цикл сначала устанавливает arg в первый каталог, а затем массив заполняется символическими ссылками, например, он найдет 2 символьных ссылки, поэтому массив [0] array [1] будет такими ссылками, а затем он должен продолжаться со вторым аргументом, и, например, есть 3 символические ссылки, и он должен установить их в массив [2] array [3] array [4]

One Solution collect form web for “для + array + args”

Если мы говорим ksh93 или bash (и GNU find ), нет многомерных массивов (или массивов массивов), вы могли бы сделать:

 index=0 IFS=$'\n' set -f for arg do eval "array_$index"'=($(find "$arg" -type l -maxdepth "$depth" -print))' ((index++)) done 

Чтобы иметь разные массивы, называемые array_0 , array_1

(вышеупомянутое предполагает, что имена файлов не содержат символов новой строки).

Если вы хотите, чтобы все ссылки были объединены в один массив, тогда:

 IFS=$'\n' set -f array=($(find "$@" -type l -maxdepth "$depth" -print)) 

должно быть достаточно.

Использование массивов или циклов в оболочках часто является признаком того, что вы не попадаете в проблему правильно.

Например, если вы хотите найти самую глубокую символическую ссылку (как предлагает ваш комментарий), вы бы сделали что-то вроде:

 find "$@" -type l -print | awk -F/ ' NF > n {deepest = $0; n=NF} END {print "Deepest:", deepest}' 

awk будет намного более эффективным, чем оболочка для обработки текста и работы с массивами. Он предназначен для этого. Оболочек нет (и bash всех оболочек является одним из самых неэффективных на нем). Оболочки хороши при выполнении команд (например, awk или find ), для чего они предназначены.

  • Ищете удобный способ создания «постоянного массива»,
  • Обрабатывать подстановочные знаки, не соответствующие файлу в bash
  • Исходный цикл чтения скрипта bash
  • Есть ли причина, почему первый элемент массива Zsh индексируется 1 вместо 0?
  • как подсчитать длину массива, определенного в bash?
  • массив считывания и суммирование элементов
  • Bash 3.0 не поддерживает списки?
  • Gawk: передача массивов в функции
  • удаление резервной копии из массива с помощью hpacucli
  • Список всех пар слов, которые отображаются в строке вместе в файле
  • Странное поведение неинициализированных массивов и неустановленных массивов
  • Interesting Posts

    Перенаправить необработанные маршруты в / apache 2.4 и CentOS 7

    параметрические псевдонимы в csh для добавления команды экспорта

    Завершение корневых процессов

    Получите дефолт ubuntu motd в раковине рыбы

    Инструмент командной строки для создания файлов значков?

    Как я могу автоматизировать черепицу окна с пользовательской шириной? (Корица)

    Неверный порядок с командой сортировки

    Развернуть концепцию деятельности KDE для оболочки

    Как настроить два разных типа на VPN-серверах на одном компьютере?

    Как включить Tap, чтобы щелкнуть на рабочем столе MATE (Debian 8.7 powerpc)

    Вертикальные линии, соединяющие блоки в Gedit

    Изменить текст на звездочки на вкладке

    перечисление всех деталей оборудования на Linux

    Не удалось запустить резервное копирование ядра аварийного восстановления

    Есть ли способ прокомментировать несколько записей за один раз в cron?

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