查找范围内的营业日期

查找范围内的营业日期

我只需要下面的营业日期(周一至周五)(在 bash 中)

#!/bin/bash
startdate=20141030
enddate=20141120

dates=()
for (( date="$startdate"; date != enddate; )); do
    dates+=( "$date" )
    date="$(date --date="$date + 1 days" +'%Y%m%d')"
done
echo "${dates[@]}"

答案1

按以下方式更改脚本:

#!/bin/bash
startdate=20141030
enddate=20141120

dates=()
for (( date="$startdate"; date != enddate; )); do
    if [ "$(date --date="$date" +'%u')" -le "5" ]; then
      dates+=( "$date" )
    fi
    date="$(date --date="$date + 1 days" +'%Y%m%d')"
done
echo "${dates[@]}"

我刚刚if在将日期添加到数组之前添加了 - 子句。 %u 序列date代表:

    %u     day of week (1..7); 1 is Monday

因此,如果该值小于或等于 ( -le) 5,则为星期一至星期五。

相关内容