shell中根据日期进行循环

本文介绍了一种在Shell脚本中实现指定日期范围内的循环方法,通过将日期转换为相对于1970-01-01的秒数来计算日期差,并按天递增循环。

在写shell脚本时,我们经常会有需求,对某一个日期时间范围内进行循环处理,可以通过设置起止日期,在起止日期范围内进行循环,



```
dateStart="2016-11-16"
dateEnd="2017-03-07"


date_s=`date -d "${dateStart}" +%s`
date_e=`date -d "${dateEnd}" +%s`


while [ "${date_s}" -le "${date_e}" ];do
        statDate=`date -d @${date_s} +"%Y-%m-%d"`;

        echo $statDate;

# do something

        date_s=$((date_s+86400));
done
```
date命令 +%s 可以计算指定日期到1970-01-01 00:00:00的秒数(感觉更像是距离1970-01-01 08:00:00的时间)


```
date -d "1970-01-01 08:00:00" +%s
#结果是 0 
```
86400就是一天24小时的总秒数,如果需要在小时级别进行循环,可以每次增加3600
### 在Shell根据日期循环交替使用两个文件的示例 以下是一个Shell脚本,它可以根据当前日期选择两个文件中的一个,并在每天循环交替使用这两个文件: ```bash #!/bin/bash # 定义两个文件路径 file1="/path/to/file1.txt" file2="/path/to/file2.txt" # 获取当前日期的天数部分 current_day=$(date +%d) # 判断当前日期的天数是奇数还是偶数 if (( current_day % 2 == 0 )); then echo "Today is an even day. Using file: ${file2}" # 如果是偶数天,使用第二个文件[^1] selected_file="${file2}" else echo "Today is an odd day. Using file: ${file1}" # 如果是奇数天,使用第一个文件[^1] selected_file="${file1}" fi # 对选中的文件执行操作 if [[ -f "${selected_file}" ]]; then echo "Processing the selected file: ${selected_file}" cat "${selected_file}" # 示例操作:输出文件内容 else echo "Selected file does not exist." fi ``` #### 脚本说明 - 使用`date +%d`命令获取当前日期的天数部分。 - 通过判断天数的奇偶性来决定使用哪个文件。 - 如果当天是奇数天,则选择`file1`;如果是偶数天,则选择`file2`[^1]。 - 确保所选文件存在后,执行相关操作。 --- ### 使用Cron定时任务运行脚本 为了实现每日自动运行此脚本,可以将其配置为Cron任务。以下是添加Cron任务的方法: ```bash crontab -e ``` 在打开的编辑器中添加以下行,表示每天凌晨1点运行该脚本: ```cron 0 1 * * * /path/to/your_script.sh >> /path/to/logfile.log 2>&1 ``` 此配置将确保脚本每天运行一次,并将输出记录到指定的日志文件中[^4]。 --- ### 注意事项 - 确保脚本具有可执行权限:`chmod +x /path/to/your_script.sh`。 - 替换`/path/to/file1.txt`和`/path/to/file2.txt`为实际文件路径。 - 如果需要更复杂的日期逻辑(例如按周或月切换文件),可以调整日期解析部分的代码。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值