Tôi có một đoạn mã phân tích tên tệp thành một mảng bằng phương thức sau được lấy từ một câu hỏi và trả lời trên SO :
unset ARGS
ARGID="1"
while IFS= read -r -d $'\0' FILE; do
ARGS[ARGID++]="$FILE"
done < <(find "$@" -type f -name '*.txt' -print0)
Điều này hoạt động tuyệt vời và xử lý tất cả các loại biến thể tên tệp hoàn hảo. Tuy nhiên, đôi khi, tôi sẽ chuyển một tệp không tồn tại vào tập lệnh, ví dụ:
$ findscript.sh existingfolder nonexistingfolder
find: `nonexistingfile': No such file or directory
...
Trong trường hợp bình thường, tôi sẽ có tập lệnh bắt mã thoát với nội dung tương tự RET=$?
và sử dụng nó để quyết định cách tiến hành. Điều này dường như không làm việc với quá trình thay thế ở trên.
Thủ tục chính xác trong trường hợp như thế này là gì? Làm thế nào tôi có thể chụp mã trả lại? Có cách nào khác phù hợp hơn để xác định nếu có sự cố xảy ra trong quy trình thay thế không?