Tôi đang cố gắng viết một hàm bash đơn giản, lấy các đối số của nó, một số tệp và / hoặc thư mục. Nó nên:
- Đủ điều kiện tên tập tin.
- Sắp xếp chúng.
- Loại bỏ các bản sao.
- In tất cả những gì thực sự tồn tại.
- Trả về số lượng tệp không tồn tại.
Tôi có một kịch bản gần như làm những gì tôi muốn, nhưng rơi vào việc sắp xếp. Giá trị trả về của tập lệnh khi nó đứng là chính xác, nhưng đầu ra không (không được sắp xếp và trùng lặp). Nếu tôi bỏ ghi chú | sort -u
như đã chỉ ra, đầu ra là chính xác nhưng giá trị trả về luôn luôn 0
.
Các giải pháp đơn giản của NB để giải quyết vấn đề được hoan nghênh nhưng câu hỏi thực sự là tại sao điều này lại xảy ra trong mã tôi có. Đó là, tại sao việc thêm đường ống dường như dừng tập lệnh tăng biến r
?
Đây là kịch bản:
function uniqfile
{
local r=0
for arg in "$@"
do
readlink -e "$arg" || (( ++r ))
done #| sort -u ## remove that comment
return $r
}
for arg in "$@"
xuốngfor arg
. "Nếu 'trong TỪ ...;' không có mặt, thì 'trong "$ @"' được giả sử. " - trợ giúp cho