使用带或不带花括号的环境变量导致问题

时间:2015-11-02 14:20:43

标签: mysql bash cron

这是为了解问题的原因。

场景:我已经创建了环境变量来访问这样的mysql         $ MYSQLCMD =“mysql --user =”root“--password =”***“DB” 添加到.bashrc

现在,我创建了一个看起来像这样的脚本:

 sql_script="/home/test/scripts/update_table.sql"

 start_date=`date --date='1 day ago' +%Y-%m-%d`
 end_date=`date +%Y-%m-%d`

 echo "Starting cron for start_date=$start_date to end_date=$end_date"

 $MYSQLCMD -e "set @start_date=\"$start_date\"; set @end_date=\"$end_date\"; source ${sql_script};"

现在,我正在使用这个脚本每天作为一个cron作业运行,现在接下来我已经在我的crontab中添加了一个cron任务;

00 20 * * * /home/test/scripts/update_db.sh > /home/test/cronlogs/cron_`date +\%y\%m\%d`.log 2>&1 

每天晚上8点开始运行。

现在这个cron运行的问题总是打印出这个错误:

/home/test/scripts/update_db.sh: 12: /home/test/scripts/update_db.sh: -e: not found

但是如果更改MYSQLCMD是在脚本中用大括号调用的:$ {MYSQLCMD}那么这样可以正常工作。

当我从命令行运行时没有任何区别。 混乱之后,我甚至将#!/ bin / bash改为#!/ bin / sh,只是为了检查。 现在我仍然不明白这背后的原因。

0 个答案:

没有答案