一.编写shell脚本,获取当前时间和设定的时间段进行比较。时间需要变成时间戳(单位秒,1970年至今),然后对当前时间戳和设定的时间戳进行比较。
二.示例。脚本中写循环,每5秒检测一次,在每天的23:59:54至23:59:59时间段备份log,备份的log文件名含日期时间。
#!/bin/sh
while true
do
curtime=`date "+%H:%M:%S"`
curStamp=`date -d "$curtime" +%s`
limtime="23:59:54"
limStamp=`date -d "$limtime" +%s`
limtimeup="23:59:59"
limStampup=`date -d "$limtimeup" +%s`
if [ $curStamp -ge $limStamp -a $curStamp -lt $limStampup ]; then
echo limtime = $limtime
echo limtimeup = $limtimeup
echo curtime = $curtime
mv /mnt/sata/0/0/test.log /mnt/sata/0/0/test"`date +%Y%m%d_%H%M%S`".log
fi
sleep 5
done
注意:在if语句判断“[ ]”中注意前后的空格,调用变量使用“$”。
三.附注:
参考“Linux Shell日期比较,数值比较和字符串比较及相关 - helloxiaozhe的博客 - CSDN博客 https://blog.csdn.net/helloxiaozhe/article/details/81280095”
脚本中各运算符说明::
1.只适用于数值的比较
该类型操作会把两边变量当成整型进行加减运算,字符串abcd按整型运算无法进行,所以此类型不能用于字符串比较
参数
说明
-eq
等于则为真
-ne
不等于则为真
-gt
大于则为真
-ge
大于等于则为真
-lt
小于则为真
-le
小于等于则为真
2.适用于字符串的比较(也可用于数值比较)
参数
说明
=
相等则为真
!=
不相等则为真
3.字符串测试运算
参数
说明
-z 字符串
字符串的长度为零则为真
-n 字符串
字符串的长度不为零则为真
4.文件测试运算
参数
说明
-e 文件名
如果文件存在则为真
-r 文件名
如果文件存在且可读则为真
-w 文件名
如果文件存在且可写则为真
-x 文件名
如果文件存在且可执行则为真
-s 文件名
如果文件存在且至少有一个字符则为真,即文件大小非0时为真
-d 文件名
如果文件存在且为目录则为真
-f 文件名
如果文件存在且为普通文件则为真
-c 文件名
如果文件存在且为字符型特殊文件则为真
-b 文件名
如果文件存在且为块特殊文件则为真
(责任编辑:IT) |