週末に月末の日付を確認してインポートする必要がありますが、誰でも助けることができますか?
答え1
GNUの使用date
:
[[ $(date -d "-$(date +%d)days month" +%u) = [67] ]] && echo 'Month-End falls on weekend'
一般的に言えば、date -d "-$(date +%d)days month"
今月の日数を差し引いて月の結果を加えることを意味します。
date -d'-XXX days + 1month'
XXX
私たちは日数を計算して取得しますdate +%d
。
テスト2021年1月週末終了:
[[ $(date -d "-$(date +%d)days 3month" +%u) = [67] ]] && echo 'Month-End falls on weekend'
~から承認する%u
は曜日のFORMAT制御です(1..7)。月曜日に。そのため、お住まいの地域の週末のスケジュールに従って上記の6番と7番を変更してください。
答え2
シェルを含むksh93
:
month='this month'
month='2020-11'
month='November 2020'
if [[ ${ printf '%(%u)T' "last day in $month"; } = [67] ]]; then
print "Last day in $month falls on a weekend"
fi
シェルを使用して、zsh
来月の最初の日が日曜日か月曜日かを確認します。
zmodload zsh/datetime
strftime -s month %Y-%m # this month
month=2020-11 # given month
last_day_on_a_weekend() {
local TZ=UTC0 y m t
y=${1%-*} m=${1#*-}
if (( ++m > 12 )); then
(( y++ )); m=1
fi
strftime -rs t %Y-%m-%d $y-$m-1
strftime -s t %u $t
[[ $t = [71] ]]
}
if last_day_on_a_weekend $month; then
print "Last day in $month falls on a weekend"
fi