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

时间:2014-07-21 10:41:08

标签: bash

我尝试在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

1 个答案:

答案 0 :(得分:3)

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

#!/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。例如date --version = date (GNU coreutils) 8.21 ...

  • mm-dd-yy不是date可接受的输入格式,因此我使用了yyyy-mm-dd这是可以接受的。