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

标签 powershell operators case-sensitive

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 11 -ieq 11 -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/

相关文章:

powershell - 如何在PowerShell中使用条件语句重命名文件

c# - == 与 C# 中的等于

MySQL - 添加约束一次,在不同情况下添加两次

Powershell 并排对象

powershell - 为什么 -replace 没有按预期工作?

swift - 是否可以重载 "?"运算符?

javascript - 多个条件用 OR ||在 'if' 声明 JS

autocomplete - 如何在cygwin文件夹自动完成功能中停用大写检查?

c# - 如何改进这种将名称转换为正确大小写的方法?

powershell - 如何通过 Graph API 或 PowerShell 添加 Azure Active Directory 角色?