Echo cada comando de script de shell com um timestamp

2

set -x ou set -v imprime todos os comandos executados.

Como obtenho o comando impresso com a hora em que o comando começou a ser executado?

    
por warvariuc 30.05.2015 / 07:14

1 resposta

0

Não estou dizendo que essa é a solução perfeita, de qualquer forma, mas acho que basicamente consegue o que você precisa. Basta enrolar o script principal em uma função e ter uma função separada para chamar a hora. Tenho certeza de que isso poderia ser muito melhorado para obter o resultado exato desejado, mas aqui está o que eu criei:

#!/bin/bash

tstamp() { date +[%T:%N]; }

yourscript() {
  set -x
  echo hello
  sleep 1
  echo this
  sleep 2
  echo is
  sleep 3
  echo an
  echo example
}

yourscript | while read line; do echo -e "$(tstamp)\t$line"; done

O script acima gera o seguinte:

+ echo hello
+ sleep 1
[16:17:33:344851100]    hello
+ echo this
+ sleep 2
[16:17:34:352269700]    this
+ echo is
+ sleep 3
[16:17:36:380810900]    is
+ echo an
+ echo example
[16:17:39:392033300]    an
[16:17:39:414361400]    example
    
por 25.09.2015 / 23:21