Shell Script Não é possível enviar o tempo de execução por e-mail

1

Eu escrevi um script de shell que calcula o tempo de execução de si mesmo, mas o problema que estou enfrentando é que ele não é capaz de enviar a diferença de tempo via e-mail. Por favor ajude.

Aqui está o script

#!/bin/bash

start=$(date +%s.%N)

ls /etc > /tmp/x

rm /tmp/x

executiontime(){
end=$(date +%s.%N)
diff=$(echo "$end-$start" | bc)
echo "Inside function $diff"
}

#Email Function
Sender="Sendmail"
Recpt="[email protected]"
Sub="Test"
Message="sendmail function $diff"

#Sendmail Function
sendmailfun() {
sendmail -F $Sender -it <<END_MESSAGE
To: $Recpt
Subject: $Sub

$Message
END_MESSAGE
}

executiontime
echo "outside function $diff"
sendmailfun

Quando executo este script, a saída na linha cmd é como segue

root@itpl-lptp-008:/home/incaendo/Downloads# sh executiontest.sh 
Inside function .008025182
outside function .008025182

Mas o e-mail que recebo depois de executar o script acima só tem a seguinte linha

sendmail function ou seja, sem o valor $ diff. por quê? Existe de qualquer maneira eu posso enviar a diferença de tempo via e-mail.

    
por Tarun 07.10.2013 / 13:40

1 resposta

2

A declaração

Message="sendmail function $diff"

avalia uma vez quando o script é executado. Então diff é "" , então Message é sendmail function . A declaração não é reexecutada depois que você define diff para um novo valor, então sendmail function é o que é enviado por e-mail.

Não seria mais simples apenas executar

time myscript.sh | mail -s "Test" [email protected]
    
por zwets 07.10.2013 / 13:57