Encontrando data de negócios dentro do intervalo

2

Por favor, ajude a encontrar apenas a data da empresa (seg-sex) a partir do abaixo (no 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[@]}"
    
por creativeindian1984 12.05.2015 / 08:10

1 resposta

3

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.

    
por 12.05.2015 / 08:22