Bash 使用shell脚本递增日期

Bash 使用shell脚本递增日期,bash,shell,date,solaris,Bash,Shell,Date,Solaris,我有以下bash脚本来增加指定的日期:date #!/usr/local/bin/bash DATE=20130625 for i in {1..10} do NEXT_DATE=$(date +%Y%m%d -d "$DATE + $i day") echo $i $NEXT_DATE done 然而,它只是重复打印今天的日期,如下所示 1 20140122 2 20140122 3 20140122 4 20140122 5 20140122 6 20140122

我有以下bash脚本来增加指定的日期:date

#!/usr/local/bin/bash

DATE=20130625

for i in {1..10}
do
     NEXT_DATE=$(date +%Y%m%d -d "$DATE + $i day")
     echo $i $NEXT_DATE
done
然而,它只是重复打印今天的日期,如下所示

1 20140122
2 20140122
3 20140122
4 20140122
5 20140122
6 20140122
7 20140122
8 20140122

感谢您的帮助。顺便说一句,操作系统是Solaris 11。谢谢。

您的
日期版本似乎不支持此类日期算法。但是,它应该支持Unix时间戳之间的转换(有关详细信息,请参阅您的文档)


您的
date
版本似乎不支持此类日期算法。但是,它应该支持Unix时间戳之间的转换(有关详细信息,请参阅您的文档)


您的
date
版本似乎不支持此类日期算法。但是,它应该支持Unix时间戳之间的转换(有关详细信息,请参阅您的文档)


您的
date
版本似乎不支持此类日期算法。但是,它应该支持Unix时间戳之间的转换(有关详细信息,请参阅您的文档)

Solaris命令(至少在Solaris 8中。我找不到Solaris 11手册页)不支持您的语法,并且无法在
date
命令中进行计算

你有两个选择:

  • 忘记使用
    date
    命令和BASH。相反,可以使用诸如Perl、Python或Ruby之类的脚本语言来处理日期
  • 从站点下载GNU Coreutils。GNU Coreutils与大多数Linux系统上出现的Date命令相同。我相信它会将
    date
    命令放在
    /usr/local/bin
    中,您必须将其放在
    $PATH
    中,或者在命令中包含GNU日期的整个目录路径
Solaris命令(至少在Solaris 8中是这样。我找不到Solaris 11手册页)不支持您的语法,并且无法在
date
命令中进行计算

你有两个选择:

  • 忘记使用
    date
    命令和BASH。相反,可以使用诸如Perl、Python或Ruby之类的脚本语言来处理日期
  • 从站点下载GNU Coreutils。GNU Coreutils与大多数Linux系统上出现的Date命令相同。我相信它会将
    date
    命令放在
    /usr/local/bin
    中,您必须将其放在
    $PATH
    中,或者在命令中包含GNU日期的整个目录路径
Solaris命令(至少在Solaris 8中是这样。我找不到Solaris 11手册页)不支持您的语法,并且无法在
date
命令中进行计算

你有两个选择:

  • 忘记使用
    date
    命令和BASH。相反,可以使用诸如Perl、Python或Ruby之类的脚本语言来处理日期
  • 从站点下载GNU Coreutils。GNU Coreutils与大多数Linux系统上出现的Date命令相同。我相信它会将
    date
    命令放在
    /usr/local/bin
    中,您必须将其放在
    $PATH
    中,或者在命令中包含GNU日期的整个目录路径
Solaris命令(至少在Solaris 8中是这样。我找不到Solaris 11手册页)不支持您的语法,并且无法在
date
命令中进行计算

你有两个选择:

  • 忘记使用
    date
    命令和BASH。相反,可以使用诸如Perl、Python或Ruby之类的脚本语言来处理日期
  • 从站点下载GNU Coreutils。GNU Coreutils与大多数Linux系统上出现的Date命令相同。我相信它会将
    date
    命令放在
    /usr/local/bin
    中,您必须将其放在
    $PATH
    中,或者在命令中包含GNU日期的整个目录路径


如果是Gnu日期,您是否在Solaris上检查了日期?如果它支持
-d'+x day'
表达式?我在ubuntu上,无法复制此错误,所以是的,Solaris 11上的
日期可能有问题?另外,不确定它是否是一种类型,但应该清楚的是,它甚至没有重复开始时的$DATE,而是今天的DATE。它通常不会重复,所以这一定是原因。实际上,操作系统是x86 Solaris 10。尝试了命令“date+%Y%m%d-d”20130625+1天并获取“20140122”。此外,还尝试了“date-d”上周五“++%Y%m%d”并获取“date:非法选项--d用法:date[-u]mmddHHMM[[cc]yy][.SS]。日期[-u][+格式]日期-a[-]sss[.fff]。任何关于调试的帮助或解决方法都将非常有用。我可以从sunfree.com下载一个实用程序进行修复。我看了看,但没认出是谁。谢谢如果是Gnu日期,是否检查Solaris上的
日期
?如果它支持
-d'+x day'
表达式?我在ubuntu上,无法复制此错误,所以是的,Solaris 11上的
日期可能有问题?另外,不确定它是否是一种类型,但应该清楚的是,它甚至没有重复开始时的$DATE,而是今天的DATE。它通常不会重复,所以这一定是原因。实际上,操作系统是x86 Solaris 10。尝试了命令“date+%Y%m%d-d”20130625+1天并获取“20140122”。此外,还尝试了“date-d”上周五“++%Y%m%d”并获取“date:非法选项--d用法:date[-u]mmddHHMM[[cc]yy][.SS]。日期[-u][+格式]日期-a[-]sss[.fff]。任何关于调试的帮助或解决方法都将非常有用。我可以从sunfree.com下载一个实用程序进行修复。我看了看,但没认出是谁。谢谢如果是Gnu日期,是否检查Solaris上的
日期
?如果它支持
-d'+x day'
表达式?我在ubuntu上,无法复制此错误,所以是的,Solaris 11上的
日期可能有问题?另外,不确定它是否是一种类型,但应该清楚的是,它是一种类型
DATE=$(date +%s "$DATE")   # Adjust as necessary
for i in {1..10}
do
     seconds=$(( $i * 86400 ))
     NEXT_DATE=$(($DATE + $seconds))
     echo $i $(date +%Y%m%d -d @$NEXT_DATE)  # Adjust as necessary
done