linux shell脚本操作日期记录

最近碰到个需求,按日导出每日的数据,然后导入另一个数据库。需要写个日期相关的脚本。这里总结下

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是个写脚本是个好帮手

相关推荐
dntktop18 分钟前
解锁自动化新高度,zTasker v2.0全方位提升效率
运维·windows
我曾经是个程序员20 分钟前
C#Directory类文件夹基本操作大全
服务器·开发语言·c#
花姐夫Jun1 小时前
在 CentOS 8 系统上安装 Jenkins 的全过程
linux·centos·jenkins
运维&陈同学1 小时前
【Beats01】企业级日志分析系统ELK之Metricbeat与Heartbeat 监控
运维·elk·elasticsearch·云原生·kibana·heartbeat·metricbeat
地球资源数据云1 小时前
全国30米分辨率逐年植被覆盖度(FVC)数据集
大数据·运维·服务器·数据库·均值算法
是店小二呀1 小时前
【Linux】Linux开发利器:make与Makefile自动化构建详解
linux·运维·自动化
baihb10242 小时前
Jenkins 构建流水线
运维·jenkins
BUG 4042 小时前
LINUX--shell
linux·运维·服务器
菜鸟小白:长岛icetea2 小时前
Linux零基础速成篇一(理论+实操)
linux·运维·服务器
深海的鲸同学 luvi2 小时前
【HarmonyOS NEXT】hdc环境变量配置
linux·windows·harmonyos