Saya mencoba mencari file menggunakan find, dan meletakkan file-file itu ke dalam array Bash sehingga saya bisa melakukan operasi lain pada mereka (misalnya lsatau grepmereka). Tapi saya tidak tahu mengapa readarraytidak membaca findoutput karena disalurkan ke dalamnya.
Katakanlah saya punya dua file di direktori saat ini, file1.txtdan file2.txt. Jadi findoutputnya adalah sebagai berikut:
$ find . -name "file*"
./file1.txt
./file2.txt
Jadi saya ingin menyalurkannya ke dalam array yang dua elemennya adalah string "./file1.txt"dan "./file2.txt"(tanpa tanda kutip, jelas).
Saya sudah mencoba ini, di antara beberapa hal lain:
$ declare -a FILES
$ find . -name "file*" | readarray FILES
$ echo "${FILES[@]}"; echo "${#FILES[@]}"
0
Seperti yang Anda lihat dari echooutput, array saya kosong.
Jadi apa yang sebenarnya saya lakukan salah di sini? Mengapa readarraytidak membaca findkeluaran sebagai input standar dan memasukkan string ke dalam array?
readarray -d '' < <(find your_args -print0)