#!/bin/bash
minute=`date +%-M`
echo $minute
hour=`date +%-H`
hour_before=`date -d -1hour +%-H`
today=`date +%F`
tdate=`date +%Y%m%d`
month=`date +%Y%m`
timestamp=`date +"%Y-%m-%d %H:%M:%S"`
if [ $# -gt 0 ];then
mytime=`date --date="$1"`
hour=`date -d"$mytime" +%-H`
hour_before=`date -d"$mytime"-1hour +%-H`
today=`date -d"$mytime" +%F`
tdate=`date -d"$mytime" +%Y%m%d`
month=`date -d"$mytime" +%Y%m`
minute=`date -d"$mytime" +%-M`
timestamp=`date --date="$1" +"%Y-%m-%d %H:%M:%S"`
fi
if [ $minute -le 10 ];then
echo "greate"
let "hour=$hour-1"
let "hour_before=$hour_before-1"
fi
写了一个按小时运行的任务,放到调度系统中运行,程序是在每小时的57分钟运行,但是调度系统经常会跨小时启动,造成很多错误。
所以在程序中对 时间进行判断,使用了几个知识点:
date 的形式
minute=`date +%-M` %-M 如果是0~9分钟,只显示1,2,3……,9,而%M 会显示 01,02,……,09 , 这种形式是不能在if 和let 中使用的
let 在shell中做运算