写法一
在Linux中,你可以使用date命令结合shell脚本来计算并展示本月最后一个周五的日期。以下是一个简单的bash脚本示例,用于实现这个功能:
#!/bin/bash
# 获取下个月的第一天
next_month=$(date -d "next month" +%Y-%m-01)
# 计算本月的最后一天
last_day_of_month=$(date -d "$next_month - 1 day" +%Y-%m-%d)
# 初始化一个变量来存储最后一个周五的日期
last_friday=""
# 从本月的最后一天开始向前遍历,直到找到周五为止
day=$(date -d "$last_day_of_month" +%d)
while [ "$day" -ge 1 ]; do
# 获取当前遍历的日期的星期几(1代表周一,7代表周日)
weekday=$(date -d "$last_day_of_month - $((day-1)) days" +%u)
# 如果当前日期是周五(weekday等于5),则将其赋值给last_friday并退出循环
if [ "$weekday" -eq 5 ]; then
last_friday=$(date -d "$last_day_of_month - $((day-1)) days" +%Y-%m-%d)
break
fi
# 减少天数继续循环
((day--))
done
# 输出本月最后一个周五的日期
echo "本月最后一个周五的日期是: $last_friday"
你可以将以上脚本保存到一个文件中,比如last_friday_of_month.sh,然后在终端中通过运行bash last_friday_of_month.sh来执行它。脚本会输出本月最后一个周五的日期。
请注意,这个脚本假设你的系统时区设置正确,并且你的date命令支持-d选项和+%u、+%Y-%m-%d等格式化选项。这些特性在GNU date中通常是可用的,但如果你使用的是BSD风格的date(例如在macOS中),你可能需要调整脚本中的命令来适应不同的语法。
写法二
#!/bin/bash
# Get the first day of the next month
next_month=$(date -d "next month" +%Y-%m-01)
# Calculate the last day of the current month
last_day_of_month=$(date -d "$next_month - 1 day" +%Y-%m-%d)
# Find the last Friday of the current month
last_friday=$(date -d "$last_day_of_month - $(date -d "$last_day_of_month" +%u) days +6 days" +%Y-%m-%d)
echo "The last Friday of the month is: $last_friday"