Definição do espaço de tempo em um script Bash [closed]

0

Como não estou familiarizado com scripts Bash complexos, espero que alguém possa ajudar a definir um intervalo de tempo durante a meia-noite. Quando o script é acionado, deve testar se a hora é entre as 17:00 e as 08:00. Somente se for verdade, um comando deve ser executado. Eu tentei o seguinte e funciona, mas não mais de meia-noite. Alguma ideia de como perceber isso?

#!bin/bash
hr='date +%H%M'  
if test $hr -ge 1700 -a $hr -lt 0800  
then        
echo "success"

fi
    
por Woody Woodpecker 25.07.2017 / 21:06

2 respostas

2

Para correr entre as 17h e as 7:59 (excluindo as 8h):

case $(date +%H) in
  (17|18|19|20|21|22|23|00|01|02|03|04|05|06|07) echo run;;
  (*) echo do not run;;
esac

... para incluir todos os períodos de tempo das 8h, inclua 8 na primeira lista. Não é necessário incluir os minutos no comando date .

    
por 25.07.2017 / 21:31
1

Não tenho certeza do que você está tentando fazer, mas uma questão que vejo é que um número não pode ser maior que 1700 e menor que 0800, portanto, sua instrução if sempre retornará false. Você precisa usar um operador or em vez de um and .

Eis o que descobri que parece funcionar:

#!/bin/bash
hr=$(date +%H%M)
if [[ $hr -ge "1700" || $hr -lt "0800" ]]; then
echo "success"
fi
    
por 25.07.2017 / 21:19