Shell 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="tarun@example.com"
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

Когда я запускаю этот сценарий, вывод в строке cmd выглядит следующим образом

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

Но письмо, которое я получаю после выполнения вышеприведенный скрипт просто имеет следующую строку

sendmail function, т.е. без значения $ diff. почему так? Могу ли я отправить разницу во времени по электронной почте?

1
задан 8 October 2013 в 14:06

1 ответ

Оператор

Message="sendmail function $diff"

вычисляется один раз при выполнении сценария. Тогда diff равно "", поэтому Message равно sendmail function. Оператор не выполняется повторно после того, как вы установите diff в новое значение, поэтому sendmail function - это то, что отправляется по электронной почте.

Не проще ли запустить

time myscript.sh | mail -s "Test" tarun@example.com
0
ответ дан 8 October 2013 в 14:06

Другие вопросы по тегам:

Похожие вопросы: