Bash for 循环和全局扩展

hel*_*low 5 bash

考虑以下 bash 代码:

 for f in /tmp/*.dat; do echo ${f}; done
Run Code Online (Sandbox Code Playgroud)

当我运行它并且输出中没有*.dat文件时/tmp

/tmp/*.dat
Run Code Online (Sandbox Code Playgroud)

这显然不是我想要的。但是,当有这样的文件时,它会打印出正确的

/tmp/foo.dat
Run Code Online (Sandbox Code Playgroud)

当目录中没有这样的文件时,如何强制 for 循环返回“无”。该find-command是不是一种选择,对不起为:/我想也有一个解决方案,而测试中,如果*.dat是文件还是不行。到目前为止有任何解决方案吗?

Jah*_*hid 5

这应该有效:

shopt -s nullglob
...
Run Code Online (Sandbox Code Playgroud)

来自 Bash 手册

空球

如果设置,Bash 允许不匹配任何文件的文件名模式扩展为空字符串,而不是它们本身。