Untuk mengetahui berapa lama operasi tertentu dalam skrip Bash (v4 +), saya ingin mengurai output dari time
perintah "secara terpisah" dan (akhirnya) menangkapnya dalam variabel Bash ( let VARNAME=...
).
Sekarang, saya menggunakan time -f '%e' ...
(atau lebih tepatnya command time -f '%e' ...
karena Bash built-in), tetapi karena saya sudah mengarahkan output dari perintah yang dieksekusi, saya benar-benar bingung bagaimana saya akan menangkap output dari time
perintah. Pada dasarnya masalah di sini adalah untuk memisahkan output dari time
output dari perintah yang dieksekusi.
Yang saya inginkan adalah fungsionalitas menghitung jumlah waktu dalam detik (bilangan bulat) antara memulai perintah dan penyelesaiannya. Itu tidak harus menjadi time
perintah atau masing-masing built-in.
Sunting: mengingat dua jawaban yang berguna di bawah ini, saya ingin menambahkan dua klarifikasi.
- Saya tidak ingin membuang output dari perintah yang dieksekusi, tetapi tidak masalah apakah itu berakhir pada stdout atau stderr.
- Saya lebih suka pendekatan langsung daripada yang tidak langsung (yaitu menangkap output secara langsung sebagai lawan menyimpannya dalam file perantara).
Solusi menggunakan date
sejauh ini mendekati apa yang saya inginkan.
fork()
,execvp()
danwait3()/wait4()
. Inilah yang akhirnya dilakukan oleh waktu dan teman-teman. Saya tidak mengetahui cara simle untuk melakukannya di bash / perl tanpa mengarahkan ke file atau pendekatan serupa.