我编写了一个 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
后,语句不会重新执行,通过电子邮件发送的内容也是如此。diff
sendmail function
运行不是更简单吗
time myscript.sh | mail -s "Test" [email protected]