Powershell 如果 -eq 和 -ieq 不区分大小写并且具有相同的用途,或者 -ieq 需要在特定场景中使用?

Dav*_*ren 3 powershell operators case-sensitive

if ("True" -eq "true") {
  Write-Host "Hello"
} 
else {
  Write-Host "World"
}
Run Code Online (Sandbox Code Playgroud)

输出:“你好”

if ("True" -ieq "true") {
  Write-Host "Hello"
} 
else {
  Write-Host "World"
}
Run Code Online (Sandbox Code Playgroud)

输出:“你好”

如果两者都用于相同的目的,是否需要-ieq

mkl*_*nt0 5

操作者-ieq只是一个别名为(另一名称)-eq,则等于运算符[1] ,这是区分不敏感字符串比较,如PowerShell的一般

因此,-ieq并不是必需的,但你可以选择使用它来明确信号,不区分大小写(该i指示),并与对比它-ceq的变体-eq运营商,这是区分大小写(该c指示)。

警告所有比较操作数(例如/ )存在i- 和c-prefixed 变体,但是对于诸如还与字符串以外的操作数一起使用的运算符,对于非字符串操作数前缀的使用将被忽略;例如,和相同,只是简单地比较数字比较是一种混合情况:对于变体,它的作用主要类似于字符串-imatch-cmatch-eq1 -ceq 11 -ieq 11 -eq 1
[char]-eq(不区分大小写、文化不变的比较,但与字符串不同,字符之间的 Unicode 等价性不被识别),而-lt/-gt变体则严格执行序数比较,即按 Unicode 代码点进行数值比较 - 请参阅此答案


[1] 从技术上讲,在幕后,情况正好相反:
{ 'True' -eq 'true' }.Ast.EndBlock.Statements[0].PipelineElements[0].Expression.Operatoryields Ieq