【发布时间】:2012-10-02 00:10:38
【问题描述】:
mailx -s "Report for $DATE_TENDAYS_FORMAT1" -r uname@host.com uname@host.com <<EOF
Total Items Purchased as per EDW: `echo $QUERY_TEN_DAYS3 | awk '{print $1}'`
Total Items Missing or Mismatch : `echo $QUERY_TEN_DAYS3 | awk '{print $2}'`
Mismatch Percentage: `100*((echo $QUERY_TEN_DAYS3 | awk '{print $2}')/(echo $QUERY_TEN_DAYS3 | awk '{print $1}'))`
EOF
每当我尝试使用上述语法使用mailx 发送电子邮件时,我总是在第三行(Mismatch Percentage) on * sign 上收到错误消息。我在第三行的乘法过程中做错了什么?
更新:-
TEST1=`echo $QUERY_TEN_DAYS3 | awk '{print $1}'`
echo $TEST1
TEST2=`echo $QUERY_TEN_DAYS3 | awk '{print $2}'`
echo $TEST2
mailx -s "Report for $DATE_TENDAYS_FORMAT1" -r uname@host.com uname@host.com <<EOF
Comparison using previous day’s data
******************************************
Mismatch Percentage: $((100 * ($TEST2/ $TEST1)))
EOF
我已经尝试了上面的代码,但它仍然在第一行给我错误( unexpected。有什么想法为什么会发生?
【问题讨论】:
-
反引号语法在反引号之间运行命令行,并将整个部分替换为命令的输出。您收到错误是因为
100*((...不是命令。$((...))用于算术运算,$(...)是使用反引号的替代方法,这在您有多个嵌套命令时很有用,例如在您的情况下。