我想循环遍历所有匹配扩展名的文件 jpg
要么 txt
。我用:
for file in myDir/*.{jpg,txt}
do
echo "$file"
done
问题: 如果目录根本不包含jpg文件,则循环将有一次带输出的迭代 myDir/*.jpg
。我想 *
将被任意文件替换(如果不存在文件,则无法扩展)。如何避免不必要的迭代?
我想循环遍历所有匹配扩展名的文件 jpg
要么 txt
。我用:
for file in myDir/*.{jpg,txt}
do
echo "$file"
done
问题: 如果目录根本不包含jpg文件,则循环将有一次带输出的迭代 myDir/*.jpg
。我想 *
将被任意文件替换(如果不存在文件,则无法扩展)。如何避免不必要的迭代?
使用它来避免不必要的迭代:
shopt -s nullglob
从 man bash
:
nullglob
:如果设置,bash允许不匹配任何文件的模式(参见上面的Pathname Expansion)扩展为空字符串,而不是自己。
看到: help shopt
和 shopt