error-handling - zsh 在 glob 失败中幸存下来

标签 error-handling zsh gitignore glob

我已经 checkout 一个项目,该项目包含一个 .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我想要的是
    “脚本”应该继续遍历文件的每一行,依次尝试每一行。
    我自己回答了这个,答案在下面

    最佳答案

    以典型的 Zsh 方式在 zsh mailing list 上找到答案 - 当您知道如何做时,这非常简单,否则就不可能。

    print *.nosuchextension(N)
    

    (N) glob 参数可防止在匹配失败时引发错误。

    关于error-handling - zsh 在 glob 失败中幸存下来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18931477/

    相关文章:

    bash - 如何使用 BASH 和 ZSH 向用户呈现可编辑的输入?

    git - 为什么 gitignore 忽略了我的所有文件,尽管只写入了一个要忽略的文件?

    git - 如何忽略 .gitignore 文件中的 dist 文件夹?

    bash - 在 zsh 中使用 bash complete -C

    bash - 使用 pip 安装新软件包时出现 zsh 文件存在错误

    git - 我可以使用 git 提交文件,但在执行 git svn dcommit 时自动忽略它吗?

    function - 错误 '800a005e' 无效使用 Null : 'CDate' when using a function in ASP Classic-VBScript

    matlab - mex编译错误: expected expression error at Matlab datatype and function

    PHP 使用 exit()

    c - 使用 'goto' 的流量控制宏