bash:for循环不存在的文件

时间:2014-04-04 09:23:36

标签: bash file loops for-loop exists

我想在当前目录中处理一组文件(* .ui)。如果找到某些* .ui文件,则以下脚本按预期工作。但是如果当前目录中没有.ui文件,则输入for循环完全相同。那是为什么?

for f in *.ui
do
    echo "Processing $f..."
done

打印:

Processing *.ui...

2 个答案:

答案 0 :(得分:1)

使用:

shopt -s nullglob

来自man bash

  

<强>了nullglob           如果设置,bash允许不匹配任何文件的模式(请参阅路径名扩展           以上)扩展为空字符串,而不是自己。

答案 1 :(得分:0)

你已经知道如何,为什么&#39;是bash会首先尝试将*.ui与文件匹配,但如果这不起作用(它没有结果),它会假设你的意思是字符串"*.ui"

for f in "*.ui"
do
    echo "Processing $f..."
done

确实会打印"Processing *.ui"