如何检查脚本中的实际时间?

如何检查脚本中的实际时间?

我想检查脚本中的时间。如果在 06:00 am 到 12:00 am 之间,则应该输出上午。如果在 01:00 pm 和 06:00 pm 之间,则应输出下午。在 07:00 pm 到 10:00 pm 之间,它应该输出 night,在 11:00 pm 到 05:00 am 之间,它应该输出 night。

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

相关内容