Сколько элементов может хранить массив в 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?

  • Показать текст в виде звездочек
  • Запустите процесс в определенном окне экрана, если он существует, в противном случае создайте этот экран, а затем сделайте это
  • Можно ли выполнить скрипт, который принимает пользовательский ввод, а затем выполнить другой скрипт
  • Использование сценария ожидания для автоматизации проверки пароля для множества маршрутизаторов
  • Как явным образом установить tabname нового терминала gnome?
  • прекратить обработку в сценарии оболочки, но не выходить
  • Прикрепить файлы для отправки почты, которые являются результатом набора команды find
  • подчеркивание с двумя переменными
  • One Solution collect form web for “Сколько элементов может хранить массив в unix-скрипте?”

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

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

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

    Interesting Posts

    Как я могу изменить $ record в mutt в зависимости от адреса?

    Домены безопасности SELlinux

    arecord, пока уровень звука не снизится достаточно низко

    Почему сценарий в /etc/rc6.d не запускается при перезагрузке?

    Как предотвратить выполнение заданий cron в определенные моменты времени в Debian? («игровой» / «режим производительности»)

    не удалось обнаружить .pcf шрифты

    denyhosts блокирует доступ существующих пользователей от неизвестных (новых) IP-адресов

    gzip: неожиданный конец файла с – как читать файл в любом случае

    как перенести систему squashfs в другую файловую систему, которая читает / записывает

    Настройка сетевого имени не работает

    Touchpad не работает должным образом после обновления – Arch на Chromebook

    Обновление Suse 10.3 до 11.3 и запуск невозможен

    Отключите питание USB для управляемой электропитанием USB

    Как передать каталог с экранированным пространством в переменную?

    Сделайте KVM / libvirt дождитесь подключения к сети перед запуском гостей

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