특정 디렉토리의 모든 파일을 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와 mapfile여기 모두에서가 아니라 단지 myarr=(mysqldump*)? 공백과 줄 바꿈이있는 파일 이름으로도 작동합니다.
nullglob(에 옵션을 shopt -s nullglob위해에) myarr=(mysqldump*)배열로 끝나지에 ('mysqldump*')어떤 파일이 일치하지 경우.