Bash scripting: obtenha a semana do mês referenciando a segunda-feira daquela semana

1

Gostaria de poder recuperar o número da segunda-feira da semana atual usando um script bash no Ubuntu Linux.

Exemplo e informação: Esta última segunda-feira (30 de outubro) foi a quinta segunda-feira de outubro, e quarta-feira foi o primeiro dia e obviamente a primeira quarta-feira de novembro. O script que estou tentando fazer seria verificar se um procedimento de backup tem a mídia semanal correta disponível. Eu tenho semanas 1-5 disponíveis em termos de mídia. O script será executado e verifique qual é o número da segunda-feira da semana atual. Esta semana verificaria e descobriria segunda-feira era a quinta segunda-feira, significando semana 5 mídia deveria estar presente. Na próxima semana, verificaria e descobriria que é a primeira segunda-feira, então a mídia da semana 1 deveria estar presente.

O script será executado diariamente (seg-sex) e fará referência apenas ao número da semana da segunda-feira. Significado segunda-feira semana 1, semana 2, 3, 4 e em alguns meses 5.

Eu tenho um comando de data com alguma aritmética que me pega na semana do número do mês, no entanto, ele só fará isso com base no dia atual. É isso:

$((($(date +%-d)-1)/7+1))

Espero ter explicado bem o suficiente sem que isso seja muito confuso.

Qualquer ajuda seria apreciada. Obrigada!

    
por twofourniner 02.11.2017 / 21:53

1 resposta

1

Podemos dizer que date baseia sua saída em uma data específica, em vez de hoje, com o argumento -d. Uma string de formato válida é "segunda-feira passada", portanto, só precisamos verificar se hoje é segunda-feira:

$ if [ "$(date +%A)" == "Monday" ]; then Monday="today"; else Monday="last Monday"; fi; echo $((($(date -d "$Monday" +%-d)-1)/7+1))
5
    
por 02.11.2017 / 22:38

Tags