linux脚本shell实现一天中当前时间和设置的时间段比较

一.编写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 文件名

如果文件存在且为块特殊文件则为真

你可能感兴趣的:(脚本)