如何在Bash循环中增加一个date

我正在研究这个基本上在两个date上工作的函数。 一个是当前date,另一个是1个月前的date。 这里是代码:

dateTale=$(date -d "$(date) - 1 month" +%Y%m%d) now=$(date +%Y%m%d) while ["$dateTale" -lt "$now"] do $dateTale=$(date -d "$dateTale + 1 day" +%Y%m%d) echo "adding" done 

正如你可以看到我试图增加dateTale,直到它到达当前date,bu我继续得到错误消息:[20120703:命令没有find我试图从while语句中删除引号,但仍然是相同的错误消息。 但即使解决了,将计算实际date值或数字?

有什么build议?

使用[命令:

 while [ "$dateTale" -lt "$now" ] 

另外,在赋值给变量时不要使用'$'(与perl或php不同):

 dateTale=$(date -d "$dateTale + 1 day" +%Y%m%d) 

应该是$dateTale不是$(dateTale)

 #!/bin/sh dateTale=$(date -d "$(date) - 1 month" +%Y%m%d) now=$(date +%Y%m%d) while [ $dateTale -lt $now ] do dateTale=$(date -d "$dateTale + 1 day" +%Y%m%d) echo $dateTale done