Bash for循环和glob扩展

时间:2015-07-08 09:43:11

标签: bash

考虑以下bash代码:

 for f in /tmp/*.dat; do echo ${f}; done

当我运行此文件且*.dat中没有/tmp文件时输出为:

/tmp/*.dat

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

/tmp/foo.dat

如何强制for循环返回'没有'当目录中没有这样的文件时。 find - 命令不是一个选项,不好意思:/我希望还有一个没有测试的解决方案,如果*.dat是一个文件。到目前为止的任何解决方案?

1 个答案:

答案 0 :(得分:2)

这应该有效:

shopt -s nullglob
...

From Bash Manual

  

了nullglob

     

如果设置,Bash允许不匹配任何文件的文件名模式进行扩展   到一个空字符串,而不是自己。

相关问题