我正在尝试学习更多shell脚本。这台机器上的可用shell是/ bin / sh,/ bin / csh和/ bin / tcsh,sh是默认的并在这里使用。操作系统是FreeBSD 9.1-RELEASE。
我当前的项目需要检查进程昨天是否更新了数据库。前两个回波就在那里,验证变量是否符合我的想法。
#!/bin/sh
lastcheck=$(mysql -h dbserver.mysite.com -u myuser -pmypass mydb -se "SELECT MAX(DATE_FORMAT(datetime_sent_to_fulfiller,'%Y%m%d')) FROM print_mailing_request;"|cut -f1)
yesterday=$(echo -e "$(TZ=GMT+30 date +%Y%m%d)\n$(TZ=GMT+20 date +%Y%m%d)" | grep -v $(date +%Y-%m-%d) | tail -1)
echo "previous day was $yesterday"
echo "we last checked on $lastcheck"
if [ "$lastcheck" -eq "$yesterday" ]; then
echo "cool"
else
echo "uncool"
fi;
一个问题是: not found:
输出出现的原因以及如何预防?
另一个问题是为什么'酷'和'不酷'都被回应?
最后一个问题是为什么'else'被回应?
$ /bin/sh pmr.cron.sh
: not found:
previous day was 20160602
we last checked on 20160602
: not found:
: not found:
cool
: not found: else
uncool
: not found:
答案 0 :(得分:1)
if
的两个分支都生成的原因。-eq
将其作为数字进行比较。