特定のディレクトリにあるすべてのファイルを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パイプから適切に読み取らないのですか?
findandをmapfileここで使用するのmyarr=(mysqldump*)ですか?これは、スペースと改行を含むファイル名でも機能します。
nullglob(上のオプションをshopt -s nullglobのために)myarr=(mysqldump*)配列で終わるいないに('mysqldump*')何のファイルが一致しない場合。