有我的脚本(简化):
cd /etc; for f in *.{conf,cfg,foo}; do echo $f; done
它输出类似
adduser.conf
apg.conf
...
vdpau_wrapper.cfg
*.foo
(只是一个例子)
就目前而言,我使用类似的东西
for f in *.{conf,cfg,foo}; do test -f $f && echo $f; done
因为*.foo
(没有与掩码匹配的文件)
*.ext
有没有更方便的解决方案(例如,如果没有找到此类文件,请不要列出)?
换句话说:*.foo
当没有文件与*.foo
掩码匹配时,我想避免输出中的行。
您可以使用:
使用以下方法再次禁用它:
如果您正在编写一个 shell 函数,需要临时无条件地启用或禁用 shopt 设置,然后恢复到以前的状态,您可以这样做:
还有一个相反的选项 ,
failglob
它会在全局扩展失败时导致错误消息。