最简洁可靠的方式是用 date +%u 获取星期数字(1=周一,7=周日),判断是否为6或7:weekday=$(date +%u); if [ "$weekday" = "6" ] || [ "$weekday" = "7" ]; then echo "周末"; else echo "工作日"; fi。

直接用 date +%u 获取当前是星期几的数字(1=周一,7=周日),再判断是否为6或7即可。这是最简洁、可靠的方式。
用 %u 判断星期六或星期日
%u 返回 1–7 的整数,其中 6 表示星期六,7 表示星期日。适合在 if 条件中直接比较:
weekday=$(date +%u)if [ "$weekday" = "6" ] || [ "$weekday" = "7" ]; then echo "周末"; else echo "工作日"; fi
用 %w 判断更需注意起始日
%w 返回 0–6,但 0 是星期日,1 是星期一……6 是星期六。所以周末对应的是 0 和 6:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
daynum=$(date +%w)if [ "$daynum" = "0" ] || [ "$daynum" = "6" ]; then echo "周末"; fi
注意:%w 以周日为一周起点,和部分脚本逻辑习惯不同,容易混淆,推荐优先用 %u。
一行命令快速判断
无需变量,直接执行判断并输出结果:
date +%u | grep -qE "^(6|7)$" && echo "是周末" || echo "不是周末"- 或更稳妥写法(避免 grep 错误退出影响):
[ $(date +%u) -ge 6 ] && echo "周末" || echo "工作日"
扩展:判断指定日期是否为周末
配合 -d 选项可检查任意日期,比如明天是否周末:
tomorrow=$(date -d tomorrow +%u)[ "$tomorrow" = "6" ] || [ "$tomorrow" = "7" ] && echo "明天是周末"- 检查固定日期:
date -d "2026-09-20" +%u输出 7 → 星期日 → 是周末










