Para saber cuánto tiempo tardan ciertas operaciones dentro de un script Bash (v4 +), me gustaría analizar el resultado del time
comando "por separado" y (en última instancia) capturarlo dentro de una variable Bash ( let VARNAME=...
).
Ahora, estoy usando time -f '%e' ...
(o más bien command time -f '%e' ...
debido al Bash incorporado), pero dado que ya redirijo la salida del comando ejecutado, realmente estoy perdido en cuanto a cómo capturaría la salida del time
comando. Básicamente, el problema aquí es separar la salida de time
la salida de los comandos ejecutados.
Lo que quiero es la funcionalidad de contar la cantidad de tiempo en segundos (enteros) entre el inicio de un comando y su finalización. No tiene que ser el time
comando o el respectivo incorporado.
Editar: dadas las dos respuestas útiles a continuación, quería agregar dos aclaraciones.
- No quiero tirar la salida del comando ejecutado, pero realmente no importará si termina en stdout o stderr.
- Preferiría un enfoque directo sobre uno indirecto (es decir, capturar la salida directamente en lugar de almacenarla en archivos intermedios).
La solución que utilizo date
hasta ahora se cierra a lo que quiero.
fork()
,execvp()
ywait3()/wait4()
. En última instancia, esto es lo que están haciendo el tiempo y los amigos. No conozco una manera simple de hacerlo en bash / perl sin redirigir a un archivo o enfoque similar.