考虑以下 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是文件还是不行。到目前为止有任何解决方案吗?
这应该有效:
shopt -s nullglob
...
Run Code Online (Sandbox Code Playgroud)
空球
如果设置,Bash 允许不匹配任何文件的文件名模式扩展为空字符串,而不是它们本身。