年間54日目の日曜日の日付を印刷したいと思います。次のスクリプトを作成しましたが、出力にエラーが発生します。
スクリプト:
req_date=`date +%m%d%Y`
for i in {1..54}
do
NEXT_DATE=$(date +%m%d%Y -d "$req_date + 7*$i day")
echo "$NEXT_DATE"
done
出力
+ for i in '{1..54}'
++ date +%m%d%Y -d '11132019 + 7*32 day'
date: invalid date ‘11132019 + 7*32 day’
+ NEXT_DATE=
+ echo ''
+ for i in '{1..54}'
++ date +%m%d%Y -d '11132019 + 7*33 day'
date: invalid date ‘11132019 + 7*33 day’
+ NEXT_DATE=
+ echo ''
+ for i in '{1..54}'
++ date +%m%d%Y -d '11132019 + 7*34 day'
date: invalid date ‘11132019 + 7*34 day’
+ NEXT_DATE=
+ echo ''
+ for i in '{1..54}'
++ date +%m%d%Y -d '11132019 + 7*35 day'
date: invalid date ‘11132019 + 7*35 day’
+ NEXT_DATE=
..
誰かが私を助けることができますか?
ベストアンサー1
存在するksh93
、
printf '%(%Y-%m-%d)T\n' '2020-01 '{1..52}'th Sunday'
2020年の全52日曜日のリストを提供します(より便利で明確な形式で提供されますが、YYYY-MM-DD
本当に(本当に?)必要に応じていつでも変更できます)。%m%d%Y
printf '%(%Y-%m-%d)T\n' '2023-01 '{1..53}'th Sunday'
2023年には53。
年に日曜日は54日にすることはできません。
年に54人がいる可能性があります週そのうちの2つは完了していないため、date +%W
00〜53の値を使用できますが、00週または53週のうち少なくとも1つの日曜日は隣接する年に属します(そして00週または53週が1年以上に属することがあります)。 ; ISOの週番号()を使用すると、%V
これを防ぎ、01から53まで進みます。