模式匹配在 Bash 脚本中不起作用
- 2024-11-11 08:26:00
- admin 原创
- 19
问题描述:
使用模式匹配!("file1")
在 bash 脚本中不起作用但可以在命令行中起作用。
例如:
ls !("file1"|"file2")
这将列出目录中除file1
和之外的所有文件file2
。
当在脚本中执行该行时,会显示以下错误:
./script.sh: line 1: syntax error near unexpected token `('
./script.sh: line 1: ` ls !("file1"|"file2") '
无论使用什么rm -v !("file1")
。都会发生相同的错误。这是怎么回事?为什么这在脚本中不起作用?
解决方案 1:
您尝试使用的扩展 glob 语法默认是关闭的;您必须在想要使用它的每个脚本中单独启用它。
shopt -s extglob
脚本不应该使用ls
,但我想您在这里只是将它用作占位符。
解决方案 2:
除非您启用 shell opt,否则通配符不会以这种方式工作extglob
。相反,我建议使用find
:
find . -maxdepth 1 -not -name '<NAME>' -or -name '<NAME>' -delete
在运行此命令之前,请-delete
确保输出正确
解决方案 3:
采用默认设置且无外部过程的方法:
for f in *; do [[ $f =~ ^file[12]$ ]] || echo "$f"; done
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD