PowerShell逻辑问题:
$a = 1
$b = 2
if ($a = $b) {
$ans = $true
}
else {
$ans = $false
}
Write-Host $ans
Output:
True
请问有人能解释一下为什么这个语句结果为 true 吗?是因为我先把 $ans 赋值给了 true 吗?还有,有人能告诉我如何让这个语句按照我预期的方式运行吗?
PowerShell逻辑问题:
$a = 1
$b = 2
if ($a = $b) {
$ans = $true
}
else {
$ans = $false
}
Write-Host $ans
Output:
True
请问有人能解释一下为什么这个语句结果为 true 吗?是因为我先把 $ans 赋值给了 true 吗?还有,有人能告诉我如何让这个语句按照我预期的方式运行吗?
你正在执行一个赋值操作$a = $b
,赋值成功并返回true,因为b是true,所以当前情况下第一个条件将始终被评估为真,改用比较运算符:$a -eq $b
。
==
符号,相当于===
的是($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
if
,而是使用$ans = ($a -eq $b)
。 - JosefZ