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