Để tìm hiểu các thao tác nhất định trong tập lệnh Bash (v4 +) mất bao lâu, tôi muốn phân tích đầu ra từ time
lệnh "riêng biệt" và (cuối cùng) nắm bắt nó trong một biến Bash ( let VARNAME=...
).
Bây giờ, tôi đang sử dụng time -f '%e' ...
(hay đúng hơn là command time -f '%e' ...
do Bash tích hợp), nhưng vì tôi đã chuyển hướng đầu ra của lệnh đã thực thi nên tôi thực sự bị mất về cách tôi sẽ bắt đầu xuất ra time
lệnh. Về cơ bản các vấn đề ở đây là để tách các đầu ra của time
từ đầu ra của lệnh thực thi (s).
Điều tôi muốn là chức năng đếm lượng thời gian tính bằng giây (số nguyên) giữa việc bắt đầu một lệnh và hoàn thành lệnh. Nó không phải là time
lệnh hoặc tích hợp tương ứng.
Chỉnh sửa: đưa ra hai câu trả lời hữu ích dưới đây, tôi muốn thêm hai làm rõ.
- Tôi không muốn vứt bỏ đầu ra của lệnh đã thực thi, nhưng nó thực sự không quan trọng cho dù nó kết thúc trên thiết bị xuất chuẩn hay thiết bị xuất chuẩn.
- Tôi thích một cách tiếp cận trực tiếp hơn một cách gián tiếp (nghĩa là bắt đầu ra trực tiếp thay vì lưu trữ nó trong các tệp trung gian).
Các giải pháp sử dụng date
cho đến nay đóng lại với những gì tôi muốn.
fork()
,execvp()
vàwait3()/wait4()
. Đây cuối cùng là những gì thời gian và bạn bè đang làm. Tôi không biết một cách đơn giản để làm điều đó trong bash / perl mà không chuyển hướng đến một tập tin hoặc cách tiếp cận tương tự.