Eu preciso verificar as permissões de arquivo dos diretórios /usr
, /tmp
, /var
e seu conteúdo de subdiretórios. Tomei as permissões de arquivo do diretório e seus arquivos de subdiretório em uma matriz separadamente para cada um dos /usr
, /tmp
e /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
}
Por fim, quero que essas matrizes separadas estejam em matriz única, que está 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: subscript out of range
quando eu der apenas um array à matriz perm como abaixo, não estou recebendo nenhum erro.
set -A perm ${PR_Tperm[@]}
Eu tenho tantas entradas para armazenar na matriz perm . Como posso aumentar o tamanho do array dinamicamente? set -A não está relacionado ao bash, mas esse aumento dinâmico pode ser o mesmo para o bash e o ksh, então incluí-lo.
Eu tentei armazenar em um arquivo temporário, como 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?