スクリプトで昨日の日付を月曜日に設定します。

スクリプトで昨日の日付を月曜日に設定します。

私は月曜日から金曜日まで毎朝バックアップファイルがあることを確認するスクリプトを書いています。これらのバックアップファイルは、月曜日から金曜日まで毎日最後の時間に保存され、単に名前が付けられます。

02_10_15

問題があります。月曜日にスクリプトを実行すると、次のように表示されます。

09_10_15

ファイル名が次のようなため、ファイルが見つかりません。

06_10_15

昨日の代わりに

08_10_15

以下で私の日付コードを見つけてください。

#Create variables
yday=$(date --date yesterday +"%d_%m_%y")
#yday="02_10_15"
FileName=$(date --date yesterday +"%Y%m%d")

最後の金曜日月曜日特別な日付をどのように知ることができますか?

答え1

unset mon
[ $(date +%u) -eq 1 ] && mon='Fri'
yday=$(date --date="last ${mon}day" +"%d_%m_%y")

したがって、date +%u生産が月曜日に行われる1と、変数は次のようにmon設定されます。Fri- 日付文字列はですlast Friday。それ以外の場合は、未設定のままlast daymon空)。

答え2

情報ページによると、GNUはdate利用可能な他の形式を受け入れます。例は次のとおりです。

FileName=$(date --date '1 day ago' +"%Y%m%d")
FileName=$(date --date 'last Friday' +"%Y%m%d")

しかし、「最後の勤務日」や「週の最後の日」などのバリエーションはサポートしていないようです。スクリプトを平日(月曜日から金曜日)にのみ実行する必要がある場合、または祝日を検討している場合は、これを行うには複数行が必要です。

関連情報