如果-eq和-ieq不区分大小写并且具有相同的用途,或者在特定情况下需要使用-ieq,是否可以使用Powershell?

问题描述

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表示)。

注意事项所有比较操作数存在ci前缀的变体,例如c / { {1}}),但对于像-imatch这样的运算符(也适用于除字符串以外的操作数 ),对于忽略前缀 非字符串操作数;例如-cmatch-eq1 -ceq 1相同,只需简单地数值上比较
1 -ieq 1比较是 hybrid 情况:使用1 -eq 1变体,它主要的作用类似于字符串(不区分大小写,不区分文化的比较,但是与字符串不同,无法识别字符之间的Unicode等价),而对于[char] / -eq变体,它严格执行 ordinal 比较,即按Unicode代码点的数字比较-参见this answer


[1]从技术上讲,在幕后,反之亦然:
-lt产生-gt