我在使用脚本检查表的日期以确保从属数据是最新的时遇到问题
问题是日期相等性回归不正确:
NOW=$(date +"%Y-%m-%d")
VALUE=`mysql -uroot -p database -e "select DATE_FORMAT(create_date,'%Y-%m-%d') as '' from actions order by id desc limit 1"`
echo $NOW $VALUE
if [ "$?" -ne 0 ]; then
MSG="MySQL check data date failed"
echo $MSG
echo $MSG > $MESSAGE
/bin/mail -s "$SUBJECT" "$EMAIL" < $MESSAGE
exit 7
fi
if [ "$NOW" != "$VALUE" ]; then
echo "not equal"
fi
输出结果是它们不相等:
2011-12-08 2011-12-08
不等于
我的猜测是我正在比较两种不同的类型,但根据bash文档不应该是这种情况。 谁可以给我解释一下这个? 感谢
答案 0 :(得分:3)
如果你打开shell调试set -vx
,你会看到每一行(或代码块,如while,for循环)显示,(详细模式),然后你得到行执行时所有变量都扩展到当前值。将最后一个条件更改为
if [ "X${NOW}X" != "X${VALUE}X" ] ; then ....
您可以轻松判断$NOW
或$VALUE
是否嵌入了额外的空格字符。一旦您可以看到差异的位置,就可以轻松确定如何修复这些值的分配。
我希望这会有所帮助。