Shell 脚本无法通过电子邮件发送执行时间

Shell 脚本无法通过电子邮件发送执行时间

我编写了一个 shell 脚本,它可以计算自身的执行时间,但我遇到的问题是它无法通过电子邮件发送时间差。请帮忙。

以下是脚本

#!/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

当我运行此脚本时,cmd 行上的输出如下

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

但是执行上述脚本后我收到的电子邮件只有如下一行

sendmail function 即没有 $diff 值。为什么这样?有没有什么办法可以通过电子邮件发送时差。

答案1

该声明

Message="sendmail function $diff"

脚本执行时计算一次。然后diff"",所以Message是。设置为新值sendmail function后,语句不会重新执行,通过电子邮件发送的内容也是如此。diffsendmail function

运行不是更简单吗

time myscript.sh | mail -s "Test" [email protected]

相关内容