我尝试在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
答案 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
这是可以接受的。