如何将PowerShell变量设置为True或False

7

PowerShell逻辑问题:

$a = 1
$b = 2
if ($a = $b) {
    $ans = $true
}
else {
    $ans = $false
}
Write-Host $ans


Output:
True

请问有人能解释一下为什么这个语句结果为 true 吗?是因为我先把 $ans 赋值给了 true 吗?还有,有人能告诉我如何让这个语句按照我预期的方式运行吗?


2
你可以完全不使用 if,而是使用 $ans = ($a -eq $b) - JosefZ
1个回答

11

你正在执行一个赋值操作$a = $b,赋值成功并返回true,因为b是true,所以当前情况下第一个条件将始终被评估为真,改用比较运算符:$a -eq $b

有关PowerShell中比较的更详细信息


2
PowerShell中没有==符号,相当于===的是($a -eq $b) -and ($a -is $b)-is是类型比较运算符。 - jessehouwing
实际上,$a = $b 赋值语句并不会返回 _true_,而是 $b。例如,if ($a = 0) {…} else {…} 由于一些自动类型转换将会进入 else 分支。请注意有效的构造 $var1 = $var2 = 'some value of any type here' - JosefZ
那就是我的意思,但我明白你可能会有不同的理解。感谢指出,已更新。 - jessehouwing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接