スクリプトで実際の時間をどのように確認できますか?

スクリプトで実際の時間をどのように確認できますか?

スクリプトで時間を確認したい。午前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の専門家がより短い解決策を提供すると確信しています。

編集:コスタスの提案に基づいて

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

関連情報