shell 统计出上个月中旬到本月中旬的所有工作日

本文介绍了一个简单的Bash脚本,该脚本能够打印出指定月份(9月中旬到10月中旬)的工作日,包括计算日期范围内的总天数、上班日和休息日。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/bash

#sh create_work_day.sh 10 即可打印出9月中旬到10月中旬的工作日

month=$1

let lastmonth=${month}-1


if [ ${month} -gt 9 ];then
    end=2015${month}16
else
    end=20150${month}16
fi


if [ ${lastmonth} -gt 9 ];then
    start=2015${lastmonth}16
else
    start=20150${lastmonth}16
fi


#echo $end
#echo $start
count=0
end_day=`date -d "$end" +%s`
start_day=`date -d "$start" +%s`
delm=$[$end_day-$start_day]
day_num=$[$delm /84000]


n=${day_num}
weekend_str=""
day_str=`date -d "$n days ago $end" +%Y%m%d`
let count=count+1
for ((i=$n-1;i>=1;i--));do
    day=`date -d "$i days ago $end" +%Y%m%d`
    day_flag=`date -d $day +%w`
    if [ $day_flag -eq 0 -o $day_flag -eq 6 ];then
        weekend_str=$weekend_str,${day}
        continue
    fi
    let count=count+1
    day_str=$day_str,$day
done


end=`date -d "1 days ago $end" +%Y%m%d`
echo ${start}"--"${end}" 如果没有法定节假日或者调休"
echo 
echo "共"$count"天"
echo -e "上班日\t"$day_str
echo
echo -e "休息日\t"$weekend_str
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值