假设extglob
在 Bash 中打开(我使用 5.0.11(1)-release (x86_64-apple-darwin18.6.0))并且我们有一个名为list89988777,,,,,+--.txt
.我无法让 a,
以 extglob 模式工作,[...]
除非我不仅转义逗号,而且转义所有与之相关的内容(如果 the,
是 a 中的第一个)[..]
,这对我来说没有意义。因此:
ls *+([[:digit:]]|[\,\-\+]).txt
有效,也有效
ls *+([[:digit:]]|[[:punct:]]|[-\,+]).txt
也
ls *+([[:digit:]]|[[:punct:]]|[-+\,]).txt
但
ls *+([[:digit:]]|[\,-+]).txt
不起作用。
问题可以用 来解决ls *+([[:digit:]]|[[:punct:]]|[-+]).txt
,它有效,或者就此而言,ls *+([[:digit:]]|[[:punct:]]|[,-+]).txt
它也有效。但是,如果第一个字符是 a ,为什么转义,
和所有其他字符都是必需的?[...]
,
答案1
功劳归于在评论中回答问题的用户(但随后评论消失了)。
导致问题的不是“内部” ,
,而是“内部”,因为它创建了一个范围。因此,转义是不必要的,我们只需要确保它是集合中的第一个或最后一个。-
[...]
,
-