Como posso verificar a hora real em um script?

0

Eu quero verificar a hora em um script. Se for entre as 06:00 e as 12:00, deve sair pela manhã. Se for entre as 13:00 e as 18:00, deve sair à tarde. Entre as 19:00 e as 22:00 deve sair à noite e entre as 23:00 e as 05:00 deve sair à noite.

#!/bin/bash
# Prüft anhand der Zeit ob es Vormittag, Nachmittag, Abend oder Nacht ist
# $1 ist der Dateiname
# bash MehrfachSelektionScript.sh datei.txt -> aufrufen des Skripts

date=$(date +%H:%M)

case $date in
   [06:00-12:00])
      echo "Es ist Vormittag"
      ;;
   [13:00-18:00]) 
      echo "Es ist Nachmittag"
      ;;
   [19:00-22:00]) 
      echo "Es ist Abend"
      ;;
   [23:00-05:00]) 
      echo "Es ist Nacht"
      ;;
esac

Eu tentei isso antes

    
por Phil 25.09.2015 / 09:31

1 resposta

1

você quase faz isso

date=$(date +%H)

case $date in
   06|07|08|09|10|11|12)
      echo "Es ist Vormittag"
      ;;
   13|14|15|16|17|18) 
      echo "Es ist Nachmittag"
      ;;
   19|20|21|22) 
      echo "Es ist Abend"
      ;;
   23|00|01|02|03|04|05) 
      echo "Es ist Nacht"
      ;;
esac
  • por que se preocupar com minutos?
  • você tem que enumerar todas as horas, não há indicação de que o bash aceita o intervalo veja Editar.
  • se você esperar um pouco, tenho certeza que o perl perito virá com uma solução mais curta.

Edit: como por sugestão de Costas

case $date in
   0[6-9]|1[012])
      echo "Es ist Vormittag"
      ;;
   1[3-8]) 
      echo "Es ist Nachmittag"
      ;;
   19|2[0-2]) 
      echo "Es ist Abend"
      ;;
   23|0[0-5]) 
      echo "Es ist Nacht"
      ;;
esac
    
por 25.09.2015 / 10:04