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