Se estivermos falando de ksh93
ou bash
(e GNU find
), não há matrizes multidimensionais (ou matrizes de matrizes), você poderia:
index=0 IFS=$'\n'
set -f
for arg do
eval "array_$index"'=($(find "$arg" -type l -maxdepth "$depth" -print))'
((index++))
done
Para ter matrizes diferentes chamadas array_0
, array_1
...
(o acima assume que nomes de arquivos não contêm caracteres de nova linha).
Se você quiser que todos os links sejam mesclados em uma única matriz, então:
IFS=$'\n'
set -f
array=($(find "$@" -type l -maxdepth "$depth" -print))
deve ser o suficiente.
Usar matrizes ou loops em shells geralmente é um sinal de que você não está enfrentando o problema da maneira certa.
Por exemplo, se você quiser encontrar o link simbólico mais profundo (como seu comentário sugere), faça algo como:
find "$@" -type l -print | awk -F/ '
NF > n {deepest = $0; n=NF}
END {print "Deepest:", deepest}'
awk
será muito mais eficiente que o shell para processar texto e trabalhar com matrizes. Ele é projetado para isso. Shells não são (e bash
de todas as shells é uma das mais ineficientes). Shells são bons em executar comandos (como awk
ou find
), para isso são projetados.