Tôi đã định nghĩa một hàm shell (hãy gọi nó clock), mà tôi muốn sử dụng như một trình bao bọc cho một lệnh khác, tương tự như timehàm, ví dụ clock ls -R.
Hàm shell của tôi thực hiện một số tác vụ và sau đó kết thúc bằng exec "$@".
Tôi muốn chức năng này hoạt động ngay cả với các phần tử dựng sẵn, ví dụ như clock time ls -Rsẽ xuất kết quả của phần tử tích timehợp chứ không phải phần /usr/bin/timethi hành. Nhưng execluôn luôn kết thúc việc chạy lệnh thay thế.
Làm cách nào tôi có thể làm cho hàm Bash của mình hoạt động như một trình bao bọc cũng chấp nhận các hàm dựng sẵn dưới dạng đối số?
Chỉnh sửa : Tôi mới biết rằng đó timekhông phải là một Bash tích hợp, mà là một từ dành riêng đặc biệt liên quan đến đường ống dẫn. Tôi vẫn quan tâm đến một giải pháp tích hợp ngay cả khi nó không hoạt động time, nhưng một giải pháp tổng quát hơn sẽ còn tốt hơn nữa.
exec bash -c \' "$@" \'. Trừ khi lệnh của bạn trong tham số đầu tiên được nhận dạng là tập lệnh shell, thì nó sẽ được hiểu là tệp nhị phân được chạy trực tiếp. Ngoài ra, và đơn giản hơn, chỉ cần bỏ lỡexecvà gọi"@"từ vỏ ban đầu của bạn.