用于循环和全局扩展的Bash
考虑以下bash代码:用于循环和全局扩展的Bash,bash,Bash,考虑以下bash代码: for f in /tmp/*.dat; do echo ${f}; done 当我运行此程序时,/tmp中没有*.dat文件,输出为: /tmp/*.dat 这显然不是我想要的。但是,当有这样一个文件时,它会打印出正确的文件 /tmp/foo.dat 当目录中没有这样的文件时,如何强制for循环返回'nothing'。find-命令不是一个选项,很抱歉:/I如果*.dat是文件还是非文件,我还希望有一个未经测试的解决方案。到目前为止有什么解决方案吗?这应该可以:
for f in /tmp/*.dat; do echo ${f}; done
当我运行此程序时,/tmp
中没有*.dat
文件,输出为:
/tmp/*.dat
这显然不是我想要的。但是,当有这样一个文件时,它会打印出正确的文件
/tmp/foo.dat
当目录中没有这样的文件时,如何强制for循环返回'nothing'。find
-命令不是一个选项,很抱歉:/I如果*.dat
是文件还是非文件,我还希望有一个未经测试的解决方案。到目前为止有什么解决方案吗?这应该可以:
shopt -s nullglob
...
空球
如果设置了,Bash允许扩展不匹配任何文件的文件名模式
指向空字符串,而不是其本身
有趣的阅读: