如何在Bash循环中增加日期

时间:2012-08-03 14:35:03

标签: linux bash

我正在研究这个基本适用于2个日期的功能。 一个是当前日期,另一个是1个月前的日期。 下面是代码:

 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直到它到达当前日期,我继续收到错误消息:[20120703:命令未找到 我尝试从while语句中删除引号但仍然是相同的错误消息。 但即使解决了,也会计算实际日期值或数字值?

有什么建议吗?

3 个答案:

答案 0 :(得分:7)

使用[命令时,空格非常重要:

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

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

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

答案 1 :(得分:2)

$dateTale不是$(dateTale)

答案 2 :(得分:0)

#!/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