加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用bash中的while循环打印增量日期

发布时间:2020-12-15 21:00:32 所属栏目:安全 来源:网络整理
导读:我尝试在bash脚本中使用while循环在两个日期之间打印日期. 但是当我执行时,我得到以下错误: test.sh: line 8: [: 02-12-14: integer expression expected 以下是我的代码,任何人都可以帮助我 #!/bin/bashsdate=02-12-14edate=02-25-14while [ "$sdate" -le
我尝试在bash脚本中使用while循环在两个日期之间打印日期.

但是当我执行时,我得到以下错误:

test.sh: line 8: [: 02-12-14: integer expression expected

以下是我的代码,任何人都可以帮助我

#!/bin/bash

sdate=02-12-14
edate=02-25-14


while [ "$sdate" -le "$edate" ]
do
echo $sdate
sdate=$(date +%m-%d-%y -d "$sdate + 1 day")
done

解决方法

您应该将它们存储为时间戳:

#!/bin/bash

sdate=$(date -d '2014-02-12' +%s)
edate=$(date -d '2014-02-25' +%s)

while [[ sdate -le edate ]]; do
    date -d "@$sdate" '+%m-%d-%y'
    sdate=$(date -d "$(date -d "@${sdate}" ) + 1 day" +%s)
done

输出:

02-12-14
02-13-14
02-14-14
02-15-14
02-16-14
02-17-14
02-18-14
02-19-14
02-20-14
02-21-14
02-22-14
02-23-14
02-24-14
02-25-14

>对于Bash中的条件表达式,总是更喜欢[[]]而不是[]. (())也可能是偏好.>它需要GNU日期.例如date –version = date(GNU coreutils)8.21 …> mm-dd-yy不是输入日期可接受的格式,因此我使用了yyyy-mm-dd,这是可以接受的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读