最近碰到个需求,按日导出每日的数据,然后导入另一个数据库。需要写个日期相关的脚本。这里总结下
bash
#!/bin/bash
function dateFunc(){
echo "从${2}到${3}"
next=`date -d "$2" +%s`
start=${2}
end=`date -d "$3" +%s`
i=0
while [ $next -lt $end ]
do
next=`date -d "${start} +${i} day" +%s`
echo `date -d "${start} +${i} day" +%Y-%m-%d`
((i=i+1))
done
}
read -p " 请输入(yes/y/no/n):" input
case "$input" in
[Yy][Ee][Ss]|[Yy])
dateFunc $1 $2 $3
;;
[Nn][Oo]|[Nn])
echo "退出"
exit
;;
*)
exit
;;
esac
echo "从当前日期往前`expr $1 + 1`推天"
for ((i=0;i<=${1};i++))
do
echo "第${i}天"
str=$(date -d "${i} day ago" +%Y-%m-%d)
echo $str
done
echo "从当前日期到${2}"
t1=`date -d "$2" +%s`
t2=`date -d "$(date +%Y-%m-%d) 0:00:00" +%s`
i=0
while [ $t1 -lt $t2 ]
do
echo $(date -d "${i} day ago" +%Y-%m-%d)
t2=$(date -d "${i} day ago 0:00:00" +%s)
((i=i+1))
done
运行情况如下:
bash
# sh testDate.sh 5 2023-07-11 2023-07-20
请输入(yes/y/no/n):y
从2023-07-11到2023-07-20
2023-07-11
2023-07-12
2023-07-13
2023-07-14
2023-07-15
2023-07-16
2023-07-17
2023-07-18
2023-07-19
2023-07-20
从当前日期往前6推天
第0天
2023-07-18
第1天
2023-07-17
第2天
2023-07-16
第3天
2023-07-15
第4天
2023-07-14
第5天
2023-07-13
从当前日期到2023-07-11
2023-07-18
2023-07-17
2023-07-16
2023-07-15
2023-07-14
2023-07-13
2023-07-12
2023-07-11
分别设想了三种情况
1、从某日到某日
2、从当前日期往前推N天
3、从某个日期到当前日期
plus:chatgpt是个写脚本是个好帮手