Tôi đang cố gắng tìm kiếm các tệp bằng cách sử dụng findvà đặt các tệp đó vào một mảng Bash để tôi có thể thực hiện các thao tác khác trên chúng (ví dụ: lshoặc grepchúng). Nhưng tôi không thể hiểu tại sao readarraykhông đọc findđầu ra khi nó được đưa vào.
Nói rằng tôi có hai tệp trong thư mục hiện tại file1.txtvà file2.txt. Vì vậy, findđầu ra như sau:
$ find . -name "file*"
./file1.txt
./file2.txt
Vì vậy, tôi muốn chuyển nó thành một mảng có hai phần tử là các chuỗi "./file1.txt"và "./file2.txt"(không có dấu ngoặc kép, rõ ràng).
Tôi đã thử điều này, trong số một vài thứ khác:
$ declare -a FILES
$ find . -name "file*" | readarray FILES
$ echo "${FILES[@]}"; echo "${#FILES[@]}"
0
Như bạn có thể thấy từ echođầu ra, mảng của tôi trống.
Vậy chính xác thì tôi đang làm gì sai ở đây? Tại sao readarraykhông đọc findđầu ra là đầu vào tiêu chuẩn của nó và đưa các chuỗi đó vào mảng?
readarray -d '' < <(find your_args -print0)