「特定日時から遡って直近の金曜日」っていうのが必要になって、
GNU date
でできるかと思って試したけど駄目っぽかった。
だめ1
$ date -d "2018-11-01 last friday"
木 11 1 00:00:00 JST 2018
だめ2
# 2018-11-13 現在
$ date -d "2018-11-01" -d "last friday"
金 11 9 00:00:00 JST 2018
ので
modでやることにした。
#!/bin/bash
set -ue
function target_last_friday() {
from="$1"
w=$(date -d "$from" +%w)
mod=$((7 - $(date -d Fri +%w)))
diff=$(( (mod + w) % 7 ))
date -d "$from $diff day ago" +%Y-%m-%d
}
###
# 今日から
date
echo "---"
# 90日ほど遡って確認
seq 0 90 | while read d; do
t1=$(date -d "$d day ago" +%F)
echo -ne "$t1 -> "
t2=$(target_last_friday "$t1")
date -d "$t2"
done
対象の曜日を変えたければ $(date -d Fri +%w)
ここ直せばOK。
stdout
火 11 13 19:09:19 JST 2018
---
2018-11-13 -> 金 11 9 00:00:00 JST 2018
2018-11-12 -> 金 11 9 00:00:00 JST 2018
2018-11-11 -> 金 11 9 00:00:00 JST 2018
2018-11-10 -> 金 11 9 00:00:00 JST 2018
2018-11-09 -> 金 11 9 00:00:00 JST 2018
2018-11-08 -> 金 11 2 00:00:00 JST 2018
2018-11-07 -> 金 11 2 00:00:00 JST 2018
2018-11-06 -> 金 11 2 00:00:00 JST 2018
2018-11-05 -> 金 11 2 00:00:00 JST 2018
2018-11-04 -> 金 11 2 00:00:00 JST 2018
2018-11-03 -> 金 11 2 00:00:00 JST 2018
2018-11-02 -> 金 11 2 00:00:00 JST 2018
2018-11-01 -> 金 10 26 00:00:00 JST 2018
2018-10-31 -> 金 10 26 00:00:00 JST 2018
2018-10-30 -> 金 10 26 00:00:00 JST 2018
2018-10-29 -> 金 10 26 00:00:00 JST 2018
2018-10-28 -> 金 10 26 00:00:00 JST 2018
2018-10-27 -> 金 10 26 00:00:00 JST 2018
2018-10-26 -> 金 10 26 00:00:00 JST 2018
2018-10-25 -> 金 10 19 00:00:00 JST 2018
2018-10-24 -> 金 10 19 00:00:00 JST 2018
2018-10-23 -> 金 10 19 00:00:00 JST 2018
2018-10-22 -> 金 10 19 00:00:00 JST 2018
2018-10-21 -> 金 10 19 00:00:00 JST 2018
2018-10-20 -> 金 10 19 00:00:00 JST 2018
2018-10-19 -> 金 10 19 00:00:00 JST 2018
2018-10-18 -> 金 10 12 00:00:00 JST 2018
2018-10-17 -> 金 10 12 00:00:00 JST 2018
2018-10-16 -> 金 10 12 00:00:00 JST 2018
2018-10-15 -> 金 10 12 00:00:00 JST 2018
2018-10-14 -> 金 10 12 00:00:00 JST 2018
2018-10-13 -> 金 10 12 00:00:00 JST 2018
2018-10-12 -> 金 10 12 00:00:00 JST 2018
2018-10-11 -> 金 10 5 00:00:00 JST 2018
2018-10-10 -> 金 10 5 00:00:00 JST 2018
2018-10-09 -> 金 10 5 00:00:00 JST 2018
2018-10-08 -> 金 10 5 00:00:00 JST 2018
2018-10-07 -> 金 10 5 00:00:00 JST 2018
2018-10-06 -> 金 10 5 00:00:00 JST 2018
2018-10-05 -> 金 10 5 00:00:00 JST 2018
2018-10-04 -> 金 9 28 00:00:00 JST 2018
2018-10-03 -> 金 9 28 00:00:00 JST 2018
2018-10-02 -> 金 9 28 00:00:00 JST 2018
2018-10-01 -> 金 9 28 00:00:00 JST 2018
2018-09-30 -> 金 9 28 00:00:00 JST 2018
2018-09-29 -> 金 9 28 00:00:00 JST 2018
2018-09-28 -> 金 9 28 00:00:00 JST 2018
2018-09-27 -> 金 9 21 00:00:00 JST 2018
2018-09-26 -> 金 9 21 00:00:00 JST 2018
2018-09-25 -> 金 9 21 00:00:00 JST 2018
2018-09-24 -> 金 9 21 00:00:00 JST 2018
2018-09-23 -> 金 9 21 00:00:00 JST 2018
2018-09-22 -> 金 9 21 00:00:00 JST 2018
2018-09-21 -> 金 9 21 00:00:00 JST 2018
2018-09-20 -> 金 9 14 00:00:00 JST 2018
2018-09-19 -> 金 9 14 00:00:00 JST 2018
2018-09-18 -> 金 9 14 00:00:00 JST 2018
2018-09-17 -> 金 9 14 00:00:00 JST 2018
2018-09-16 -> 金 9 14 00:00:00 JST 2018
2018-09-15 -> 金 9 14 00:00:00 JST 2018
2018-09-14 -> 金 9 14 00:00:00 JST 2018
2018-09-13 -> 金 9 7 00:00:00 JST 2018
2018-09-12 -> 金 9 7 00:00:00 JST 2018
2018-09-11 -> 金 9 7 00:00:00 JST 2018
2018-09-10 -> 金 9 7 00:00:00 JST 2018
2018-09-09 -> 金 9 7 00:00:00 JST 2018
2018-09-08 -> 金 9 7 00:00:00 JST 2018
2018-09-07 -> 金 9 7 00:00:00 JST 2018
2018-09-06 -> 金 8 31 00:00:00 JST 2018
2018-09-05 -> 金 8 31 00:00:00 JST 2018
2018-09-04 -> 金 8 31 00:00:00 JST 2018
2018-09-03 -> 金 8 31 00:00:00 JST 2018
2018-09-02 -> 金 8 31 00:00:00 JST 2018
2018-09-01 -> 金 8 31 00:00:00 JST 2018
2018-08-31 -> 金 8 31 00:00:00 JST 2018
2018-08-30 -> 金 8 24 00:00:00 JST 2018
2018-08-29 -> 金 8 24 00:00:00 JST 2018
2018-08-28 -> 金 8 24 00:00:00 JST 2018
2018-08-27 -> 金 8 24 00:00:00 JST 2018
2018-08-26 -> 金 8 24 00:00:00 JST 2018
2018-08-25 -> 金 8 24 00:00:00 JST 2018
2018-08-24 -> 金 8 24 00:00:00 JST 2018
2018-08-23 -> 金 8 17 00:00:00 JST 2018
2018-08-22 -> 金 8 17 00:00:00 JST 2018
2018-08-21 -> 金 8 17 00:00:00 JST 2018
2018-08-20 -> 金 8 17 00:00:00 JST 2018
2018-08-19 -> 金 8 17 00:00:00 JST 2018
2018-08-18 -> 金 8 17 00:00:00 JST 2018
2018-08-17 -> 金 8 17 00:00:00 JST 2018
2018-08-16 -> 金 8 10 00:00:00 JST 2018
2018-08-15 -> 金 8 10 00:00:00 JST 2018