ロケール設定と関係があります。具体的には、照合シーケンスは大文字小文字を区別しないシーケンスです。例えば
、en_AU.utf8
からLC_COLLATE
セット(私のシステム上のデフォルト)で、あなたはそれが小文字含まれていることを見ることができると一緒に大文字:
pax> case A in [a-b]) echo TRUE;; esac
TRUE
pax> _
をしかし、あなたは、範囲指定を取り除く場合、それは期待通りに動作します:
pax> case A in [ab]) echo TRUE;; esac
pax> _
その照合順序のために、A
を含み、第一の手段between a and b inclusive
ためだこと。後者の意味は、a
とb
のみです。照合シーケンスの影響を受ける範囲ではありません。あなたは、大文字と小文字を区別したものとご照合順序を設定した場合
は、それはあなたが期待するように動作します
pax> export LC_COLLATE="C"
pax> case A in [a-b]) echo TRUE;; esac
pax>
あなただけの何かに影響を与えることなく、一回の操作としてこれを実行したい場合は、することができますサブシェルでそれを行う:
(export LC_COLLATE="C" ; case A in [a-b]) echo TRUE;; esac)
'nocaseglob'は無関係である:'パス名展開を行う際の挙動がまだあるがセットは、bashは、 '(上記パス名展開を参照)大文字と小文字を区別しない方法でファイル名と一致する場合奇妙な – Daenyth