我有以下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.谢谢。
答案 0 :(得分:2)
Solaris date命令(至少在Solaris 8中找不到。我找不到Solaris 11联机帮助页)不支持您的语法,无法在date
命令中进行计算。
您有两种选择:
date
命令和BASH。相反,使用可以处理日期的脚本语言,如Perl,Python或Ruby。date
命令放在/usr/local/bin
中,您必须将其放在$PATH
中,或者在命令中包含GNU日期的整个目录路径。答案 1 :(得分:1)
您的date
版本似乎不支持此类日期算术。但是,它应该支持转换为Unix时间戳和从Unix时间戳转换(有关详细信息,请参阅您的文档)。
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