Для того, щоб дізнатися, скільки часу займають певні операції в сценарії 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 без перенаправлення на файл або подібний підхід.