Altere seu script da seguinte maneira:
#!/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[@]}"
Acabei de adicionar a if -clause antes de adicionar a data ao array. A sequência% u de date representa:
%u day of week (1..7); 1 is Monday
Portanto, se esse valor for menor ou igual ( -le ) a 5 , é segunda-feira a sexta-feira.