Je veux juste obtenir tous les fichiers d’un répertoire donné dans un tableau bash (en supposant qu’aucun des fichiers n’ait une nouvelle ligne dans le nom):
Alors:
myarr=()
find . -maxdepth 1 -name "mysqldump*" | mapfile -t myarr; echo "${myarr[@]}"
Résultat vide!
Si je fais la maniʻere détournée d'utiliser un fichier, temporaire ou non:
myarr=()
find . -maxdepth 1 -name "mysqldump*" > X
mapfile -t myarray < X
echo "${myarray[@]}"
Résultat!
Mais pourquoi ne mapfile
lit-il pas correctement à partir d'un tuyau?
find
et mapfile
ici du tout et pas simplement myarr=(mysqldump*)
? Cela fonctionnera même avec les noms de fichiers avec des espaces et des nouvelles lignes.
nullglob
option ( shopt -s nullglob
) pour myarr=(mysqldump*)
ne pas se retrouver avec le tableau ('mysqldump*')
si aucun fichier ne correspond.