Vim 运行时提交 3d37231437fc0f761664a7cabc8f7b927b468767尝试通过删除文件名不包含警告、错误、不适当或无法识别的单词的假设来修复 tar 编辑插件。该插件包含此代码,用于在打印消息但退出代码为 0 的情况下检测错误。
正如你在提交中看到的,
然而,整个 if 条件似乎有点可疑。如果发生错误,这可能已经在前面的 if 语句中被捕获,因为它会检查 tar 程序的返回代码。
然而,可能存在 tar 实现,它不会为某种错误设置退出代码(但打印错误消息)?但现在让我们保留这个检查,直到现在还没有多少人注意到这种行为,所以无论如何它似乎工作得相当好。
和
" FIXME:is this actually necessary? In case of an error, we should probably
" have noticed in the if statement above since tar should have exited
" with a non-zero exit code.
因此我的标题问题是:是否存在即使发生错误也退出 0 的 tar 实现?
我认为只有可能被超过 1 人使用的实现才应该算在内;特别是,我会取消诸如学生作为练习编写的实现之类的示例,除非该实现是已发表论文的产物,因此可能具有实际用途。
答案1
就您而言,GNU tar 和 BSD tar 具有有意义的退出状态,这应该有效涵盖 Windows、Linux 和 Mac OS。我不会担心糟糕的 tar 实现不会报告有意义的退出状态。