Para descobrir quanto tempo levam certas operações em um script Bash (v4 +), eu gostaria de analisar a saída do time
comando "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 time
comando. Basicamente, o problema aqui é separar a saída da time
saí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 time
comando 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 date
até 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.