Como comparar o tempo no shell script?

0

Eu tenho duas variáveis de tempo. Eu quero compará-lo na declaração if no script de shell.

por exemplo. time1=HH:MM:SS e time2=HH:MM:SS .

O formato é HH:MM:SS .

if [it matched]
then
    echo "matched" 
else
    echo "not matched"
fi
    
por its_me 24.05.2018 / 17:37

2 respostas

5

Se você quiser comparar o (conteúdo de) duas variáveis com uma string HH: MM: SS específica, basta compará-las com essas strings e amarrá-las junto com um "e" lógico ( && ):

if [ "$time1" = "01:23:45" ] && [ "$time2" = "01:42:42" ]
then
  echo matched
else
  echo not matched
fi

Outra opção é usar case ; Ele permite alguma flexibilidade na correspondência dos tempos, caso você não queira corresponder a um HH: MM: SS específico. Para começar, vamos amarrar os dois tempos juntos com um "e" implícito:

time1=01:23:45
time2=01:42:42
case "$time1,$time2" in
  (01:23:45,01:42:42) echo yes;;
esac

Aqui eu apaguei em uma vírgula, apenas para ajudá-lo a ver o que está acontecendo; poderia ser omitido.

Agora, digamos que você não se importa tanto com SS porção do tempo2:

case "$time1,$time2" in
  (01:23:45,01:42:*) echo yes;;
esac

Ou talvez você queira que os segundos do time2 estejam em um determinado intervalo:

case "$time1,$time2" in
  (01:23:45,01:42:4[1-3]) echo yes;;
esac

Você pode estender os exemplos de lá.

    
por 24.05.2018 / 17:44
3

Se o formato for o mesmo, compare-os como qualquer outra string:

$ [ "$time1" = "$time2" ] && echo "match" || echo "no match"
    
por 24.05.2018 / 17:42