스크립트에서 실제 시간을 어떻게 확인할 수 있나요?

스크립트에서 실제 시간을 어떻게 확인할 수 있나요?

스크립트에서 시간을 확인하고 싶습니다. 오전 06시부터 오전 12시 사이이면 AM이 출력되어야 합니다. 오후 01:00 ~ 오후 06:00 사이이면 오후가 출력되어야 합니다. 오후 7시부터 오후 10시 사이에는 밤을 출력해야 하고, 오후 11시부터 오전 5시 사이에는 밤을 출력해야 합니다.

#!/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

나는 이것을 전에 시도했다

답변1

당신은 거의 성공했습니다

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
  • 왜 시간을 내야합니까?
  • 항상 열거해야 하며 bash가 범위를 허용한다는 표시는 없습니다 . 편집을 참조하십시오.
  • 잠시 기다리면 Perl 전문가가 더 짧은 솔루션을 제공할 것이라고 확신합니다.

편집 : 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

관련 정보