"true" 搞乱了 Powershell 中的转义码处理?
"true" messes up escape code handling in Powershell?
我刚才在我的 Powershell 脚本中观察到一些奇怪的东西,我最终将它缩小到我的代码中的一个错误,就是这一行:
$AnyExecuted = true
应该是
$AnyExecuted = $true
然而,这一行混淆了 Windows 10 上的标准 Powershell Core windows 以及 Windows 终端中的转义码处理:
有人知道为什么会这样吗? true
表达式是什么?我找不到任何提及,为什么它会对 Powershell 的输出产生这种影响?
注意,显然我更新了我的脚本以使用 $true,这正是我想要的,这个问题只是关于 true
是什么。
执行时
$AnyExecuted = $true
$AnyExecuted
将是 Boolean
类型,您的脚本可能 运行 符合预期。如果你执行
$AnyExecuted = true
相反,如果没有抛出任何错误,那么就有一个名称为 true
的别名、cmdlet 或可执行文件可用。它在默认 Windows 10 个安装中不可用。
因为它不会在您这边引发错误,您可能 true
以某种方式可用。您可以使用 Get-Command true
检查。使用 MinGW 环境,使 true.exe
可用,例如。
使用你仍然未知的true
“东西”的结果可能确实会导致意想不到的行为。要调查 true
的结果,您可以在您的系统上评估 (true).GetType()
。
我刚才在我的 Powershell 脚本中观察到一些奇怪的东西,我最终将它缩小到我的代码中的一个错误,就是这一行:
$AnyExecuted = true
应该是
$AnyExecuted = $true
然而,这一行混淆了 Windows 10 上的标准 Powershell Core windows 以及 Windows 终端中的转义码处理:
有人知道为什么会这样吗? true
表达式是什么?我找不到任何提及,为什么它会对 Powershell 的输出产生这种影响?
注意,显然我更新了我的脚本以使用 $true,这正是我想要的,这个问题只是关于 true
是什么。
执行时
$AnyExecuted = $true
$AnyExecuted
将是 Boolean
类型,您的脚本可能 运行 符合预期。如果你执行
$AnyExecuted = true
相反,如果没有抛出任何错误,那么就有一个名称为 true
的别名、cmdlet 或可执行文件可用。它在默认 Windows 10 个安装中不可用。
因为它不会在您这边引发错误,您可能 true
以某种方式可用。您可以使用 Get-Command true
检查。使用 MinGW 环境,使 true.exe
可用,例如。
使用你仍然未知的true
“东西”的结果可能确实会导致意想不到的行为。要调查 true
的结果,您可以在您的系统上评估 (true).GetType()
。