什么是Windows命令shell相当于Bash的`true`命令?

时间:2014-02-26 16:04:07

标签: git bash shell cmd

我编写了一个Vim插件,用于运行外部命令。我运行的两个命令是diffgrep,每个命令都可以在“正常”操作期间以非零退出代码退出。

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上使用什么是正确的successful-no-op命令?

4 个答案:

答案 0 :(得分:10)

true大致相当于(exit 0)(括号创建一个退出状态为0的子shell,而不是退出当前的shell。

答案 1 :(得分:6)

Hello Baz!
Hello Bar!
Hello Foo!

适合我。

例如,

VER>NUL

发出错误消息,但会将MKDIR . || VER>NUL 设置为0。

答案 2 :(得分:3)

上下文是Windows cmd shell(由git-cmd.bat script使用):

点击“Exiting batch with EXIT /B X where X>=1 acts as if command completed successfully when using && or || operators between batch calls”后,您可以在路径中定义一个true.bat文件:

@%COMSPEC% /C exit 1 >nul

答案 3 :(得分:1)

cd .

还将%ERRORLEVEL%设置为0,但运行速度更快,写入时间短于ver>nul。示例:

mkdir . 2>nul || cd .