考虑这个简单的循环:
for f in *.{text,txt}; do echo $f; done
我只想回显有效的文件名。在脚本中使用 $f 变量一切正常,除非没有该扩展名的任何文件。在空集的情况下, $f 设置为 *.text 并且上面的行回显:
*.text
*.txt
而不是什么都不回应。如果您尝试将 $f 用于任何需要实际真实文件名的东西,而不是得到 *.
如果有任何文件与通配符匹配,因此它不是一个空集,一切都会按我的意愿工作。例如
123.text
456.txt
789.txt
我怎样才能做到这一点而不会出现错误,并且第一个字符串与 $f 匹配星号的看似过于复杂?