【发布时间】:2014-02-26 16:04:06
【问题描述】:
我编写了一个 Vim 插件,它可以运行外部命令。我运行的两个命令是diff 和grep,它们可以在“正常”操作期间以非零退出代码退出。
(diff 发现差异时以退出代码 1 退出,grep 未找到匹配时以退出代码 1 退出。)
出于我的 Vimscript 的目的,我需要从这些命令中返回退出代码 0。到目前为止,我正在构建这样的命令:
diff a b || true
还有:
grep foo bar || true
这适用于我在 OS X 上,它显然适用于某些 Windows 用户。但是,当我通过 VirtualBox 在 OS X 上运行 Windows 7 时,使用 Git 安装程序安装的 Bash,我收到错误消息:
'true' 不是内部或外部命令、可运行程序或批处理文件。
在 Windows 上使用的正确成功无操作命令是什么?
【问题讨论】:
-
作为一个小问题,
true和false是向操作系统返回 0(成功)和非零(失败)的命令。需要实际的 command 是因为,据我所知,传统的 shell 没有文字方式来指定布尔值。 -
它们并不是真正需要的,因为它们本身分别与
(exit 0)和(exit 1)相同。 -
@chepner 这为我解决了问题;谢谢!我现在使用
diff a b || exit 0。如果您可以添加您的评论作为答案,我将能够接受它。 -
当您说“在 Windows 上”时,您是指在 Windows 下运行 bash,还是运行 Windows
cmdshell?答案很可能完全不同。 bash 有false和true作为内置命令,“'true' is not recognized as an internal or external command, operable program or batch file.”是 Windows cmd 错误消息,而不是 bash 错误消息。