问题描述
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
表示),并将其与{{1 }} -ceq
运算符的变体,区分大小写 (-eq
表示)。
注意事项:所有比较操作数存在c
和i
前缀的变体,例如c
/ { {1}}),但对于像-imatch
这样的运算符(也适用于除字符串以外的操作数 ),对于忽略前缀 非字符串操作数;例如-cmatch
和-eq
与1 -ceq 1
相同,只需简单地数值上比较。
1 -ieq 1
比较是 hybrid 情况:使用1 -eq 1
变体,它主要的作用类似于字符串(不区分大小写,不区分文化的比较,但是与字符串不同,无法识别字符之间的Unicode等价),而对于[char]
/ -eq
变体,它严格执行 ordinal 比较,即按Unicode代码点的数字比较-参见this answer。
[1]从技术上讲,在幕后,反之亦然:-lt
产生-gt
。