[...]
introduz uma classe de caracteres, não um intervalo inteiro. Portanto, [18-23]
é idêntico a [138-2]
, que é o mesmo que [13]
, já que não há nada entre 8 e 2.
Você pode usar o seguinte como uma correção:
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