Tiene que ver con su configuración regional. Específicamente, la secuencia de clasificación es una con insensibilidad a mayúsculas y minúsculas.
Por ejemplo, con LC_COLLATE
conjunto de en_AU.utf8
(el valor por defecto en mi sistema), se puede ver que incluye letras minúsculas y mayúsculas en conjunto:
pax> case A in [a-b]) echo TRUE;; esac
TRUE
pax> _
pero, si se deshace del especificador de rango, funciona como se esperaba:
pax> case A in [ab]) echo TRUE;; esac
pax> _
eso es porque los primeros medios between a and b inclusive
que, por orden de clasificación que incluye A
. Para este último significa a
y b
solamente, no un rango que se vería afectado por la secuencia de clasificación.
Si establece la secuencia de clasificación a uno entre mayúsculas y minúsculas, funciona como se espera:
pax> export LC_COLLATE="C"
pax> case A in [a-b]) echo TRUE;; esac
pax>
Si lo que desea es hacer esto como una operación de una sola vez sin afectar a ninguna otra cosa, que pueda hacerlo de una sub-shell:
(export LC_COLLATE="C" ; case A in [a-b]) echo TRUE;; esac)
'nocaseglob' no está relacionada:' Si conjunto, golpe coincide con los nombres de archivo de una manera sensible a las mayúsculas cuando se realiza la expansión de nombre de ruta (véase expansión de nombre de camino arriba) ', aunque el comportamiento es aún impar. – Daenyth