我正在运行一个命令
hg st
然后检查它的$LASTEXITCODE
以检查当前目录中是否有mercurial可用。我不关心它的输出,也不想向用户显示它。
我如何抑制所有输出,无论成功或错误?
由于mercurial不是PowerShell命令,hg st | Out-Null
无效。
我正在运行一个命令
hg st
然后检查它的$LASTEXITCODE
以检查当前目录中是否有mercurial可用。我不关心它的输出,也不想向用户显示它。
我如何抑制所有输出,无论成功或错误?
由于mercurial不是PowerShell命令,hg st | Out-Null
无效。
Out-Null
能够很好地处理非 PowerShell 命令。但是,它不能抑制 STDERR
上的输出,只能抑制 STDOUT
上的输出。如果你想在管道输出到 Out-Null
之前也抑制 STDERR
输出,你必须将该文件描述符重定向到 STDOUT
:
hg st 2>&1 | Out-Null
2>
将所有的输出从STDERR
(文件描述符#2)重定向。 &1
将被重定向的输出与STDOUT
(文件描述符#1)的输出合并。 然后将组合的输出从STDOUT
打印出来,管道可以将其馈送到pipline中的下一个命令的STDIN
中(在本例中为Out-Null
)。 有关更多信息,请参见Get-Help about_Redirection
。
一个有趣的事情是将输出导入Write-Verbose,这样,如果需要,在使用脚本时可以通过-Verbose开关仍然查看它。
ping -n 2 $APP 2>&1 | Write-Verbose
hg
,这将不会抑制STDERR。 - George Mauer*>
重定向运算符不可用。 - Ansgar Wiechers
2>&1
语法实际上是什么意思吗? - George Mauer2>&1
的意思是“将标准错误重定向到与标准输出相同的位置”。 - Bill_Stewart