Per scoprire quanto tempo impiegano determinate operazioni all'interno di uno script Bash (v4 +), vorrei analizzare l'output dal time
comando "separatamente" e (in definitiva) catturarlo all'interno di una variabile Bash ( let VARNAME=...
).
Ora sto usando time -f '%e' ...
(o piuttosto a command time -f '%e' ...
causa del built-in di Bash), ma poiché ho già reindirizzato l'output del comando eseguito, sono davvero perso su come farei per acquisire l'output del time
comando. Fondamentalmente il problema qui è quello di separare l'output di time
dall'output dei comandi eseguiti.
Quello che voglio è la funzionalità di contare la quantità di tempo in secondi (numeri interi) tra l'avvio di un comando e il suo completamento. Non deve essere il time
comando o il rispettivo built-in.
Modifica: date le due utili risposte di seguito, volevo aggiungere due chiarimenti.
- Non voglio buttare via l'output del comando eseguito, ma non importa se finisce su stdout o stderr.
- Preferirei un approccio diretto rispetto a uno indiretto (ovvero catturare l'output direttamente anziché memorizzarlo in file intermedi).
La soluzione date
finora utilizzata si chiude a ciò che voglio.
fork()
,execvp()
ewait3()/wait4()
. Questo è in definitiva ciò che il tempo e gli amici stanno facendo. Non sono a conoscenza di un modo semplice per farlo in bash / perl senza reindirizzare a un file o un approccio simile.