2011-07-08 13 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

thats great ...魅力的な作品 - 私はマージバックアップスクリプトに追加する方法を試してみる必要があります:-( – Grimlockz