1

我正在研究这个基本上适用于 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 语句中删除引号,但仍然是相同的错误消息。但即使解决了, -lt 会计算实际日期值还是数字值?

有什么建议吗?

4

3 回答 3

7

使用[命令时空格很重要:

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

此外,分配给变量时不要使用“$”(与 perl 或 php 不同):

dateTale=$(date -d "$dateTale + 1 day" +%Y%m%d)
于 2012-08-03T14:37:13.303 回答
2

应该$dateTale不是$(dateTale)

于 2012-08-03T14:36:58.683 回答
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
于 2017-07-19T15:08:25.700 回答