if ("True" -eq "true") {
Write-Host "Hello"
}
else {
Write-Host "World"
}
输出:“你好”
if ("True" -ieq "true") {
Write-Host "Hello"
}
else {
Write-Host "World"
}
输出:“你好”
如果两者都用于相同的目的,是否需要
-ieq
?
最佳答案
接线员 -ieq
只是 -eq
的别名(另一个名字) , equality operator [1],即 字符串比较不区分大小写,因为 PowerShell 通常是 .
因此,-ieq
不是严格需要的,但您可以选择使用它来明确表示不区分大小写(i
表示),并将其与 -ceq
进行对比。 -eq
的变体运算符,区分大小写(c
表示)。
警告 :i
- 和 c
所有比较操作数都存在 - 前缀变体,(例如, -imatch
/-cmatch
),但 对于运营商,例如 -eq
也适用于字符串以外的操作数,对于非字符串操作数,忽略前缀的使用 ;例如,1 -ceq 1
和 1 -ieq 1
与 1 -eq 1
相同并简单地进行数字比较。
[char]
比较是一个混合案例 :与 -eq
变体它主要像字符串一样(不区分大小写,文化不变的比较,但与字符串不同,字符之间的 Unicode 等效性不被识别),而对于 -lt
/-gt
它严格执行序数比较,即通过 Unicode 代码点进行数值比较 - 参见 this answer .
[1] 从技术上讲,在幕后,情况正好相反:{ 'True' -eq 'true' }.Ast.EndBlock.Statements[0].PipelineElements[0].Expression.Operator
yield Ieq
.
关于Powershell 如果 -eq 和 -ieq 不区分大小写并且具有相同的用途,或者 -ieq 需要在特定场景中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64127557/