首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有为一个glob设置nullglob的简单方法?

有没有为一个glob设置nullglob的简单方法?
EN

Stack Overflow用户
提问于 2012-02-03 17:02:10
回答 4查看 9.1K关注 0票数 26

在bash中,如果您这样做:

mkdir /tmp/empty
array=(/tmp/empty/*)

您会发现array现在只有一个元素"/tmp/empty/*",而不是您想要的零。值得庆幸的是,这可以通过使用shopt -s nullglob打开nullglob shell选项来避免

ls foo*是全局的,在编辑现有的shell脚本时,可能会破坏某些内容(例如,是否有人检查了nullglob的退出代码,以检查是否存在以“foo”开头的文件?)。所以,理想情况下,我只想在很小的范围内启用它-理想情况下,一个文件名扩展。您可以使用shopt -u nullglob再次关闭它,但当然只有在之前禁用它的情况下:

old_nullglob=$(shopt -p | grep 'nullglob$')
shopt -s nullglob
array=(/tmp/empty/*)
eval "$old_nullglob"
unset -v old_nullglob

这让我觉得一定有更好的办法。显而易见的“放在subshell中”是行不通的,因为变量赋值与subshell一起消失了。除了waiting for the Austin group还可以导入ksh93语法吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9126060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档