【发布时间】:2013-09-21 10:20:56
【问题描述】:
我签出了一个项目,该项目包含一个.gitignore 文件。
这个文件的内容是这样的
vx1% head .gitignore
./deps
/*.exe
/*.la
/.auto
.libs
ChangeLog
Makefile
Makefile.in
aclocal.m4
autom4te.cache
我想要
- 逐行读取文件
- 对于读取的每一行,列出被忽略的实际文件
- 最后我想调整脚本以删除这些文件
想要这样做的原因是我不相信项目 Makefile 可以完全清理它生成的文件。
注意事项
如您所见,.gitignore 使用了一些我需要在运行命令之前修改的 glob,否则 glob 将解析到我的根目录。
我已经知道的
将任意字符串动态评估为 glob 模式
DYN="*.c"
打印 $~DYN
去除前导 /,如果存在的话
DYN="/*.c"
打印 ${~DYN/#//}
我有什么
猫.gitignore |读我的时候;做回声 $i ;打印 ${~i/#//} ;完成
问题
此循环遇到的第一个 glob 失败,它以错误终止
zsh: no matches found: *.exe
我想要什么
“脚本”应该继续遍历文件的每一行,依次尝试每一行。
这个是我自己回答的,答案在下面
【问题讨论】:
-
我知道,但那些脾气暴躁的人不会让我在 8 小时内发布解决方案 - 不会坐在那里等待!
标签: error-handling zsh gitignore glob