&引用;“真的”;把Powershell中的转义码处理搞砸了?

&引用;“真的”;把Powershell中的转义码处理搞砸了?,powershell,powershell-core,Powershell,Powershell Core,我刚才在我的Powershell脚本中观察到一些奇怪的东西,最后我将其缩小为代码中的一个bug,它是这样一行: $AnyExecuted = true 应该是 $AnyExecuted = $true 但是,这一行会使windows 10上的standaline Powershell Core窗口以及windows终端中的转义代码处理混乱: 有人知道为什么会这样吗?什么是true表达式?我找不到任何关于它的提及,为什么它会对Powershell的输出产生这种影响 注意,显然我更新了我的脚本

我刚才在我的Powershell脚本中观察到一些奇怪的东西,最后我将其缩小为代码中的一个bug,它是这样一行:

$AnyExecuted = true
应该是

$AnyExecuted = $true
但是,这一行会使windows 10上的standaline Powershell Core窗口以及windows终端中的转义代码处理混乱:

有人知道为什么会这样吗?什么是
true
表达式?我找不到任何关于它的提及,为什么它会对Powershell的输出产生这种影响

注意,显然我更新了我的脚本以使用$true,这正是我想要的,这个问题只是关于执行时的
true
是什么

$AnyExecuted = $true
$AnyExecuted
将是
Boolean
类型,您的脚本可以按预期运行。如果你执行

$AnyExecuted = true
相反,如果没有抛出错误,则会有一个别名、cmdlet或可执行文件,其名称为
true
。在默认的Windows 10安装中,它将不可用

由于它不会在您这边抛出错误,因此您可能会以某种方式获得
true
。您可以使用
Get Command true
检查这一点。例如,使用MinGW环境可以使
true.exe
可用


使用仍然未知的
true
“东西”的结果确实可能导致意外行为。要调查
true
的结果,您可以在您的系统上评估
(true).GetType()

是的,您的答案包含有关如何解决问题的更多详细信息,因此我删除了我的答案并接受了您的答案。我安装了Cygwin,它有
true.exe
。再加上我不了解如果我执行
if(FunctionCall)
会发生什么,如果有什么事情做了,它也会输出,它似乎正常工作。