Definir ontem Data no script especial para segunda-feira

0

Eu estou escrevendo um script um cheque se existe um arquivo de backup todas as manhãs de segunda a sexta-feira. Este arquivo de backup é salvo no final de todos os dias, de segunda a sexta-feira, nomeado apenas como

02_10_15

Há um problema que se eu executar meu script na segunda-feira disse

09_10_15

Ele não encontrará o arquivo porque o nome do arquivo é

06_10_15

em vez de ontem

08_10_15

Por favor, encontre o meu código de data abaixo,

#Create variables
yday=$(date --date yesterday +"%d_%m_%y")
#yday="02_10_15"
FileName=$(date --date yesterday +"%Y%m%d")

Como posso obter a data da segunda-feira especial para a última sexta-feira?

    
por Alan Yu 09.11.2015 / 10:30

2 respostas

1
unset mon
[ $(date +%u) -eq 1 ] && mon='Fri'
yday=$(date --date="last ${mon}day" +"%d_%m_%y")

Portanto, se for segunda-feira, date +%u produzir 1 assim, mon variável será definida como Fri e - data , a sequência será last Friday . De outra forma, será last day como mon não configurado (vazio)

    
por 09.11.2015 / 11:12
1

De acordo com a página de informações, o GNU date aceita outros formulários que você pode usar. Aqui está um exemplo:

FileName=$(date --date '1 day ago' +"%Y%m%d")
FileName=$(date --date 'last Friday' +"%Y%m%d")

No entanto, não parece suportar variantes como "last weekday" ou "last day of week". Se o seu script tiver que ser executado somente nos dias da semana (de segunda a sexta-feira) ou levar em conta os feriados, será necessário mais do que uma única linha para realizar isso.

    
por 09.11.2015 / 10:41