使用 GNU date
:
[[ $(date -d "-$(date +%d)days month" +%u) = [67] ]] && echo 'Month-End falls on weekend'
Run Code Online (Sandbox Code Playgroud)
通常,date -d "-$(date +%d)days month"
意味着减去当月的天数并在结果中添加一个月;那实际上是:
date -d'-XXX days + 1month'
Run Code Online (Sandbox Code Playgroud)
我们在这里计算并获得XXX
天数date +%d
。
2021 年 1 月在周末结束的测试:
[[ $(date -d "-$(date +%d)days 3month" +%u) = [67] ]] && echo 'Month-End falls on weekend'
Run Code Online (Sandbox Code Playgroud)
从man date 开始,%u
是星期几 (1..7) 的 FORMAT 控件;1 是星期一。所以根据您所在地区的周末日历更改上面的 6 和 7。