Quantos elementos um array pode armazenar em script unix?

Quantos elementos um array pode armazenar em script unix?

Preciso verificar as permissões de arquivo dos diretórios , /usre o conteúdo dos subdiretórios. Tomei as permissões de arquivo do diretório e seus arquivos de subdiretório em uma matriz separadamente para cada um de , e :/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
}

Finalmente, quero que esses arrays separados estejam em um único array que esteja em uma função diferente, já que temos escopo dinâmico em scripts. Eu tentei como abaixo:

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

quando executo o script, estou recebendo este erro.

script.sh:79919: subscrito fora do intervalo

quando eu dou apenas um array parapermanentearray como abaixo, não estou recebendo nenhum erro.

set -A perm ${PR_Tperm[@]}

Eu tenho tantas entradas para armazenarpermanentevariedade. Como posso aumentar o tamanho do array dinamicamente?definir -Anão está relacionado ao bash, mas esse aumento dinâmico pode ser o mesmo para bash e ksh, então eu o incluí.

Tentei armazenar em um arquivo temporário conforme mostrado abaixo:

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

Por que o primeiro comando foi executado com sucesso no bash, mas no ksh?

Responder1

Bash não tem, se bem me lembro, nenhum limite interno para o tamanho do array. KornShell93 suporta índices de até cerca de 64k em versões recentes (e até 4.095 em versões mais antigas).

Existe um utilitário chamado mtreeque é usado para comparar uma hierarquia de arquivos com uma especificação. Qualquer desvio da especificação (arquivos ou diretórios ausentes ou discrepâncias de propriedade/permissão) é relatado e opcionalmente corrigido (se possível).

Como não sei em qual Unix você está, não posso mais indicar onde encontrar esse utilitário. Está dentroSistema básico do OpenBSD, mas é evidentemente tambémdisponível para Linux.

informação relacionada