Para descobrir quanto tempo levam certas operações em um script Bash (v4 +), eu gostaria de analisar a saída do timecomando "separadamente" e (em última análise) capturá-la em uma variável Bash ( let VARNAME=...).
Agora, estou usando time -f '%e' ...(ou melhor, command time -f '%e' ...por causa do Bash interno), mas como já redirecionei a saída do comando executado, estou realmente perdido quanto à maneira como capturaria a saída do timecomando. Basicamente, o problema aqui é separar a saída da timesaída do (s) comando (s) executado (s).
O que eu quero é a funcionalidade de contar a quantidade de tempo em segundos (números inteiros) entre o início de um comando e sua conclusão. Não precisa ser o timecomando ou o respectivo built-in.
Editar: dadas as duas respostas úteis abaixo, eu queria acrescentar dois esclarecimentos.
- Eu não quero jogar fora a saída do comando executado, mas realmente não importa se ele termina em stdout ou stderr.
- Eu preferiria uma abordagem direta sobre uma indireta (ou seja, capturando a saída diretamente, em vez de armazená-la em arquivos intermediários).
A solução usando dateaté agora chega perto do que eu quero.
fork(),execvp()ewait3()/wait4(). Em última análise, é isso que tempo e amigos estão fazendo. Não conheço uma maneira simples de fazer isso no bash / perl sem redirecionar para um arquivo ou abordagem semelhante.