我想处理当前目录中的一组文件(*.ui)。如果找到某些 *.ui 文件,则以下脚本将按预期工作。但是,如果当前目录中不存在 .ui 文件,则输入 for 循环。为什么?
for f in *.ui
do
echo "Processing $f..."
done
它打印:
Processing *.ui...
使用:
shopt -s nullglob
从man bash
:
零球 如果设置,bash 允许与任何文件匹配的模式(请参阅路径名扩展 以上)扩展到空字符串,而不是它们自己。
你已经知道了方法,"为什么"是 bash 将首先尝试将*.ui
与文件匹配,但如果这不起作用(它没有得到任何结果),它会假设你的意思是字符串"*.ui"
。
for f in "*.ui"
do
echo "Processing $f..."
done
威尔确实打印"Processing *.ui"
.