gpt4 book ai didi

linux - 不匹配任何东西的 Glob 会扩展到自身,而不是什么都没有

转载 作者:IT王子 更新时间:2023-10-29 01:13:38 25 4
gpt4 key购买 nike

我想遍历特殊类型的文件夹中的文件(如 .test):

所以我写了一些脚本名称for_loop:

for f in *.test
do
echo 'This is f: '${f}
done

在 (chmod +x for_loop) 之后,我可以用 ./for_loop 启动它。

如果有 .test 文件,一切都很好,但是如果文件夹中没有匹配 *.test 的文件,for 循环仍然是执行一次。在这种情况下,输出如下所示:

This is f: *.test

但我想,如果文件夹中没有匹配glob模式的文件,就不会有输出。为什么不是这样?

最佳答案

这是默认行为。

要摆脱它,启用nullglob:

shopt -s nullglob

来自 Greg's Wiki - nullglob :

nullglob expands non-matching globs to zero arguments, rather than to themselves.

...

Without nullglob, the glob would expand to a literal * in an empty directory, resulting in an erroneous count of 1.

或者使用默认启用此 glob 的 zsh!

$ for f in *.test; do echo "$f"; done
zsh: no matches found: *.test

关于linux - 不匹配任何东西的 Glob 会扩展到自身,而不是什么都没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33898250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com