我只想将某个目录中的所有文件放入bash数组中(假设所有文件名中都没有换行符):
所以:
myarr=()
find . -maxdepth 1 -name "mysqldump*" | mapfile -t myarr; echo "${myarr[@]}"
空结果!
如果我使用临时文件或其他方法来回旋使用文件:
myarr=()
find . -maxdepth 1 -name "mysqldump*" > X
mapfile -t myarray < X
echo "${myarray[@]}"
结果!
但是为什么不能mapfile
从管道中正确读取?
find
and mapfile
这里,而不仅仅是简单myarr=(mysqldump*)
?这甚至可以用于带有空格和换行符的文件名。
nullglob
(shopt -s nullglob
)选项myarr=(mysqldump*)
,以免导致数组结尾('mysqldump*')
。