Sorun, karakter aralığının [a-z]aslında büyük harf içermesidir. Bu bash kılavuzunda açıklanmıştır :
Köşeli ayraç ifadesinde, aralık ifadesi tire ile ayrılmış iki karakterden oluşur. İki karakter arasında (dahil) sıralanan herhangi bir karakterle eşleşir. Varsayılan C yerel ayarında, sıralama dizisi yerel karakter sırasıdır; örneğin, '[ad]', '[abcd]' ile eşdeğerdir. Diğer yerel ayarlarda, sıralama dizisi belirtilmez ve '[ad]', '[abcd]' veya '[aBbCcDd]' ile eşdeğer olabilir veya herhangi bir karakterle veya karakter kümesiyle eşleşmeyebilir maçlar düzensiz bile olabilir. Köşeli parantez ifadelerinin geleneksel yorumunu elde etmek için, LC_ALL ortam değişkenini 'C' değerine ayarlayarak 'C' yerel ayarını kullanabilirsiniz.
Örneklemek gerekirse:
$ case B in [a-c]) echo YES;; *) echo NO;; esac
YES
$ LC_ALL=C; case B in [a-c]) echo YES;; *) echo NO;; esac
NO
Yani, olan şey, bulunduğunuz yerde (ki C) [a-c]aslında olmasıdır [aAbBcC]. Bu nedenle POSIX karakter sınıflarını @ karel tarafından önerilen şekilde kullanmalısınız.