PowerShell中的布尔文字

Col*_*nic 119 powershell

PowerShell中的布尔文字是什么?

Joe*_*oey 142

$true$false.

但这些都是常数.布尔语没有语言级文字.

根据您需要它们的位置,您还可以使用强制转换为布尔值的任何内容,如果类型必须是布尔值,例如在需要布尔值(并且没有冲突的重载)的方法调用中,或者条件语句.例如,大多数非null对象都是true.null,空字符串,空数组和数字0都是假的.

  • @Mike:“True”/“False”只是布尔值的字符串表示形式。`true` 永远不应该出现在 PowerShell 中;它是布尔值的 C# 文字。在你的 Azure 示例中,我猜它是从 API 返回的字符串。`$true` 实际上是布尔值的 PowerShell“文字”(技术上是常量变量)。强制转换对于允许简化一系列条件的动态语言来说很常见。看看 JavaScript 和其他。这只是语言设计的一个方向,而不仅仅是一个错误。 (2认同)

Col*_*nic 16

[bool]1并且[bool]0也有效.

  • 确切地说,您可以使用很多可以在进行转换的上下文中强制转换为布尔值的东西,例如在条件语句中。在那种情况下,您根本不需要投射。例如,“ if($ s.Length){...}”就很好。 (2认同)

RBT*_*RBT 7

要向现有答案添加更多信息:布尔文字,$true并且$false在用作 PowerShell 脚本的命令行参数时也可以按原样工作。对于存储在名为 的文件中的以下 PowerShell 脚本installmyapp.ps1

param (
    [bool]$cleanuprequired
)

echo "Batch file starting execution."
Run Code Online (Sandbox Code Playgroud)

现在,如果我必须从 PowerShell 命令行调用这个 PowerShell 文件,我可以这样做:

installmyapp.ps1 -cleanuprequired $true
Run Code Online (Sandbox Code Playgroud)

或者

installmyapp.ps1 -cleanuprequired 1
Run Code Online (Sandbox Code Playgroud)

这里1$true是等价的。此外,0$false是等价的。

注意:永远不要指望字符串文字true可以自动转换为布尔值。例如,如果我运行以下命令:

installmyapp.ps1 -cleanuprequired true
Run Code Online (Sandbox Code Playgroud)

它无法执行脚本并出现以下错误:

无法处理参数“cleanuprequired”上的参数转换。无法将值“System.String”转换为类型“System.Boolean”。布尔参数仅接受布尔值和数字,例如 $True、$False、1 或 0。