2011-07-08 48 views
2

我一直在試圖獲得一個腳本來打印出從開始日期到當天之後的日期範圍。腳本回顯日期範圍

例子:

Backup-2011-06-14 
Backup-2011-06-15 
Backup-2011-06-16 

都低於一想法,但並不甚至略有工作,任何想法?

start=$(date +%F --date="2011-06-14") 
echo "$start" 
current=$(date +%F) 
echo "$current" 
end=$(date +%F) 

while [ "$start" != "$current" ]; do 
    echo backup-$(($(date --date="$start" +%F) + $(date +%s --date='1 day'))) 
done 
+0

可能重複:http://stackoverflow.com/questions/4351282/how-to-generate-a-sequence-of-dates-given-starting-and-ending-dates-using-awk-of/4351948#4351948 – camh

回答

2

在bash中計算日期很困難。但date命令不支持從今天的日期進行簡單的加法或減法。因此,您的情況需要採用不同的方法。首先,確定要輸出這些日期的天數,然後輸出與當天日期相關的日期。

#!/bin/bash 
days=$((($(date +%s)-$(date +%s --date="2011-06-14"))/86400)) 

while [ $days -gt 0 ]; do 
    echo backup-$(date --date="-$days days" +%F) 
    days=$(($days-1)) 
done 
+0

多數民衆贊成在偉大......作品迷人 - 沒有我需要嘗試解決如何將其添加到我的合併備份腳本:-( – Grimlockz