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 intervaloveja 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