Сколько элементов может хранить массив в unix-скрипте?

Мне нужно проверить права на файлы каталогов /usr , /tmp , /var и их содержимое подкаталогов. Я взял файлы разрешений каталога и его файлов подкаталогов в массиве отдельно для каждого из /usr , /tmp и /var :

 fun() { set -A PR_Uperm -- "/usr" `ls -lRt /bin|grep -v "total"|sed -e '1d' -e '/^$/d' -e '/^l/d'|awk '{print $1}'` set -A PR_Tperm -- "/tmp" `ls -lRt /bin|grep -v "total"|sed -e '1d' -e '/^$/d' -e '/^l/d'|awk '{print $1}'` fun2 } 

Наконец, я хочу, чтобы эти отдельные массивы были в одном массиве, который имеет другую функцию, так как у нас есть динамическая область действия в скриптах. Я пробовал, как показано ниже:

 fun2(){ set -A perm ${PR_Uperm[@]} ${PR_Tperm[@]} } 

когда я выполняю скрипт, я получаю эту ошибку.

script.sh:79919: индекс вне диапазона

когда я даю только один массив для массива perm, как показано ниже, я не получаю ошибки.

 set -A perm ${PR_Tperm[@]} 

У меня так много записей для хранения в массиве perm . Как увеличить размер массива динамически? set -A не связан с bash, но это динамическое увеличение может быть одинаковым для bash и ksh, поэтому я включил его.

Я попытался сохранить во временном файле, как показано ниже:

 printf "/usr\n`ls -lRt /usr|grep -v "total"|sed -e '1d' -e '/^$/d' -e '/^l/d'|awk '{print $1}'`\n" >> /tmp/output2.txt # not working in ksh, but working when I run as bash ksh: no space ls -lRt /usr|grep -v "total"|sed -e '1d' -e '/^$/d' -e '/^l/d'|awk '{print $1}' >> /tmp/output2.txt # it is working 

Почему первая команда успешно запущена в bash, но в ksh?

  • Двойной цикл while (BASH)
  • Есть ли простой способ сделать эквивалент `sed ...` заменяя одну и ту же строку несколькими значениями?
  • Файловые дескрипторы и сценарии оболочки
  • Как удалить файлы в одной папке, которая старше 60 дней в UNIX?
  • Удаленный запуск ssh - проблемы
  • переменная оболочки в awk не передается всем строкам, а только для самой первой строки ввода?
  • Ssh на несколько серверов и объединить файлы в один
  • Как Linux работает со сценариями оболочки?
  • One Solution collect form web for “Сколько элементов может хранить массив в unix-скрипте?”

    У Bash есть, если я правильно помню, нет встроенного ограничения на размер массива. KornShell93 поддерживает индексы до 64k в последних выпусках (и до 4095 в более старых версиях).

    Существует утилита mtree которая используется для сравнения иерархии файлов со спецификацией. Любое отклонение от спецификации (отсутствующие файлы или каталоги, несоответствия владения / разрешения) сообщается и может быть скорректировано (если возможно).

    Поскольку я не знаю, что вы делаете Unix, я не могу указать вам, где найти эту утилиту. Он находится в базовой системе OpenBSD , но, очевидно, также доступен для Linux .

    Interesting Posts

    SELinux отключен, net.ipv4.tcp_syncookies и nfs

    Мой IP-адрес занесен в черный список для отправки спама, журналы не показывают ничего

    Как выполнить одну команду для всех файлов в папке

    Почему `find -name * .jks` не возвращает некоторые файлы?

    Как найти установленную команду программного обеспечения в Red Hat Linux 5?

    Изменение столбцов с помощью awk

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

    Знайте имя драйвера для использования на CUPS gui

    Неожиданный конец файла внутри моего сценария bash

    configure: ошибка: libarchive не найден

    Интернет не работает при использовании статического IP-адреса. Никаких текущих решений не работает

    Обновление меню KDE в Монетном дворе без выхода из системы

    2 вход для логина для gui и ssh налагает проверку на использование sudo

    Запустить mplayer с помощью x11 из текстовой консоли?

    AIX open (): дескриптор файла равен нулю (!?)

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