Caseステートメントを含むbashスクリプトは出力を返しません。

Caseステートメントを含むbashスクリプトは出力を返しません。

特定の時間に基づいてグリーティングをエコーするためにこのコードを書きましたが、実行するとエラーは表示されませんが、コマンドラインには何もエコーされません。問題を解決するために、すべての内容をコメントアウトし、時間変数のみを反映していましたが、本当にうまくいきました。それでは、私が何を間違っているのでしょうか? !

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

おすすめ記事