我只需要下面的营业日期(周一至周五)(在 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
,则为星期一至星期五。