Для того, щоб дізнатися, скільки часу займають певні операції в сценарії Bash (v4 +), я хотів би проаналізувати вихід з timeкоманди "окремо" і (в кінцевому рахунку) захопити його всередині змінної Bash ( let VARNAME=...).
Тепер я використовую time -f '%e' ...(вірніше, command time -f '%e' ...через вбудовану Bash), але оскільки я вже перенаправляю висновок виконаної команди, я дійсно втрачаю, як би я збирався захопити вихід timeкоманди. В основному проблема тут , щоб відокремити вихід з timeвід виходу виконаної команди (ів).
Мені хочеться - це функціональність підрахунку кількості часу в секундах (цілих числа) між запуском команди та її завершенням. Це не повинно бути timeкомандою або відповідним вбудованим.
Редагувати: з огляду на дві корисні відповіді нижче, я хотів додати два пояснення.
- Я не хочу викидати висновок виконаної команди, але це не дуже важливо, закінчується вона на stdout або stderr.
- Я вважаю за краще прямий підхід над непрямим (тобто ловити вихід безпосередньо, а не зберігати його в проміжних файлах).
Наразі рішення, яке використовується, dateзакриває те, що я хочу.
fork(),execvp()іwait3()/wait4(). Це в кінцевому підсумку те, що роблять час та друзі. Мені невідомий простий спосіб зробити це в bash / perl без перенаправлення на файл або подібний підхід.