bash extglob 中的模式列表包含 / 和 |

bash extglob 中的模式列表包含 / 和 |

这是命令(及其输出)的记录,解释了我的问题:

/tmp/example $ shopt -s
cdspell         on
checkwinsize    on
cmdhist         on
complete_fullquote      on
direxpand       on
dirspell        on
expand_aliases  on
extglob         on
extquote        on
failglob        on
force_fignore   on
globstar        on
histappend      on
interactive_comments    on
login_shell     on
nocaseglob      on
nullglob        on
progcomp        on
promptvars      on
sourcepath      on

/tmp/example $ ls -R
.:
prefix_bar  prefix_foo

./prefix_bar:
test.c

./prefix_foo:
baz  test.c

./prefix_foo/baz:
test.c

/tmp/example $ ls prefix_@(foo/baz|bar)/test.c
prefix_bar/test.c

/tmp/example $ ls @(prefix_foo/baz|prefix_bar)/test.c
prefix_bar/test.c

问题:为什么 bash 忽略模式列表的foo/baz或部分?pattern_foo/baz

作为记录,我在发布这个问题之前环顾四周,最接近我要问的问题是bash extglob:模式列表中模式的顺序是否重要?(它没有回答我的问题)。

相关内容