请查看以下代码。
#!/bin/sh
LOG_FILE=/home/admin/scriptLogs.log
rm -f ${LOG_FILE}
echo "`date`:: Script Execution Started" | tee -a ${LOG_FILE}
DATABASE ACCESS CODE 2>&1
echo "`date`:: Script Execution Successful " | tee -a {$LOG_FILE}
exit 0
它产生以下输出:
> Tue Feb 7 12:14:49 IST 2017:: Script Execution Started
> tee:{/home/admin/scriptLogs.log}: No such file or directory
> Tue Feb 7 12:14:49 IST 2017:: Script Execution Successfull
但是,该文件存在于指定位置。它还会附加除最后一个echo语句之外的数据。为什么会这样?
答案 0 :(得分:1)
确保在展开变量之前始终引用变量以避免重新解释(请在此处阅读:http://www.tldp.org/LDP/abs/html/quotingvar.html) 此外,您应该将LOG_FILE定义为字符串(请注意下面的引号):
LOG_FILE="/home/admin/scriptLogs.log"
话虽如此,你在@codeforester
中提到的脚本中有一个拼写错误此外,您打印执行成功,而不检查它确实是。
所以你的代码应该是这样的:
#!/bin/sh
LOG_FILE="/home/admin/scriptLogs.log"
rm -f "$LOG_FILE"
echo "`date`:: Script Execution Started" | tee -a "$LOG_FILE"
DATABASE ACCESS CODE 2>&1
if [ $? -eq 0 ]; then
echo "`date`:: Script Execution Successful " | tee -a "$LOG_FILE"
else
...
exit 0
注意:我已经删除了大括号,因为这里不需要它们(虽然这样做不是错误的)
答案 1 :(得分:0)
正如@codeforester所指出的那样,使用:
#!/bin/sh
LOG_FILE=/home/admin/scriptLogs.log
rm -f ${LOG_FILE}
echo "`date`:: Script Execution Started" | tee -a ${LOG_FILE}
DATABASE ACCESS CODE 2>&1
echo "`date`:: Script Execution Successful " | tee -a ${LOG_FILE}
exit 0