特定の時間に基づいてグリーティングをエコーするためにこのコードを書きましたが、実行するとエラーは表示されませんが、コマンドラインには何もエコーされません。問題を解決するために、すべての内容をコメントアウトし、時間変数のみを反映していましたが、本当にうまくいきました。それでは、私が何を間違っているのでしょうか? !
#!/bin/bash
time=$(date +%H)
case $time in
#check if its morning
[0-11] ) echo "greeting 1";;
#check if its afternoon
[12-17] ) echo "greeting 2";;
#check if its evening
[18-23] ) echo "greeting 3"
esac
ベストアンサー1
[...]
整数範囲の代わりに文字クラスを導入します。 8と2の間に何もないのでと[18-23]
同じです。[138-2]
[13]
次の方法を使用して問題を解決できます。
case $time in
#check if its morning
0?|1[01] ) echo "greeting 1";;
#check if its afternoon
1[2-7] ) echo "greeting 2";;
#check if its evening
1[89]|2? ) echo "greeting 3"
esac