我想检查脚本中的时间。如果在 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