特定のディレクトリにあるすべてのファイルを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*')
何のファイルが一致しない場合。