无法解释的 linux 标准文件名扩展中的大小写不敏感

unexplained linux case insensitivity in standard filename expansion

我不明白。这个搭配怎么样?

$: shopt nocaseglob
nocaseglob      off
$: printf "%s\n" parser/*[a-z].jar
parser/parser-1.9.2.RELEASE.jar
parser/parser.jar

它是集群中的虚拟机,而不是 Windows 机器上的仿真。

$: cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)

我正在尝试进行简单的区分大小写的匹配,以排除 .jar 前面的任何非小写字母。我只想要一个循环的版本匿名符号链接,而不是实际的版本化文件。

[a-z] 匹配的内容取决于当前 locale。在 LC_COLLATE=C 下,[a-z] 匹配 [abcdefghijklmnopqrtuvwxyz],但在某些其他设置下,例如en_US,它匹配 [aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYz] - 注意 Z 不匹配。