我每天都试图使用时间戳来旋转日志文件。存储最后一个日期字符串,然后为我的无限循环(目前每5分钟睡眠一次)生成一个新日期并比较这两个日期。如果它们相等,则为同一天,并写入相同的日志文件。如果值不同,则向新日志文件写入,但在这些新写入之前,前一天将写入tar。我的日期字符串eqaulity条件没有像我预期的那样计算,我在问为什么是:
lastdate=$(date +%Y%m%d)
while true
do
curdate=$(date +%Y%m%d)
echo "${lastdate}, ${curdate}"
if [ "$lastdate" != "$curdate" ]; then
## do tar
lastdate="$curdate"
fi
du >> "disk_du_${lastdate}.log"
sleep 300
done对于所讨论的部分,我的echo语句显示这两个字符串具有相同的值,但是条件总是运行,即使我正在测试不平等(至少,这就是目的)。我试过不同的条件变体:
if [[ "$lastdate" != "$curdate" ]]; then
if [ $lastdate != $curdate ]; then
if [[ $lastdate != $curdate ]]; then
if [ "${lastdate}" != "${curdate}" ]; then...but条件总是运行,即使字符串总是显示相同的值。我的基础结构是:http://tldp.org/LDP/abs/html/comparison-ops.html,例7-5,所以我希望有人能告诉我我做错了什么。蒂娅。
发布于 2018-04-03 22:31:28
我建议你检查一下你的鞭子
测试:
GNU,版本4.3.11(1)-release (x86_64-pc-linux-gnu)
--它在工作:
#!/bin/bash
lastdate=$(date +%Y%m%d)
while true
do
curdate=$(date +%Y%m%d)
echo "${lastdate}, ${curdate}"
if [ "$lastdate" != "$curdate" ]; then
## do tar
lastdate="$curdate"
echo "TRUE"
else
echo "FALSE"
fi
sleep 5
done退出:
20180404, 20180404
FALSE
20180404, 20180404
FALSE
20180404, 20180404
FALSE
20180404, 20180404
FALSE
20180404, 20180404
FALSE
20180404, 20180404
FALSE
20180404, 20180404
FALSE
20180404, 20180404
FALSEhttps://stackoverflow.com/questions/49639105
复制相似问题