你是否在理解 PowerShell 比较运算符(如 eq
、ne
、ceq
和 cne
)方面感到困惑?如果是的话,请继续阅读。
作为一个软件开发背景的人,我第一次遇到“啥?”时刻是当我第一次看到 PowerShell 的比较运算符 eq
、ceq
、cne
等。所有其他编程语言都有比较运算符,但与 PowerShell 不太相同。我习惯于使用 ==
和 <>
。
不仅语法看起来与您典型的编程语言完全不同,而且在处理值集合的比较时它们的行为也不同。
当学习 PowerShell 时,这确实让我困扰不已,但现在它似乎就像那句老话一样;它是一种习得的口味。
让我们简要地了解一下如果您不熟悉的话什么是比较运算符,并深入探讨 PowerShell 引入的细微差别。不久之后,您就能毫无问题地在 PowerShell 脚本中使用运算符了。
正如我所提到的,所有编程/脚本语言都有比较运算符。从它们最基本的意义上讲,比较运算符是必需的,用于评估不同事物之间的比较。它们用于获取两个对象并查看这两个对象之间的差异(如果有的话)。
在 PowerShell 的情况下,运算符还可以用于在值集合内查找元素。
对于这篇文章,我将讨论相等运算符以及 PowerShell 如何使用它们。这些是`eq`和`ne`以及它们区分大小写的对应物`ceq`和`cne`。您可以访问 Technet 网站 查看完整列表,或者在您的 Powershell 控制台中使用`Get-Help about_comparison_operators`。
PowerShell -EQ 和 -CEQ
如果您需要查看对象是否等于另一个对象,您必须使用`eq`(不区分大小写)或`ceq`(区分大小写)运算符。这些运算符测试您想要比较的每个实体的值。
当我开始学习 PowerShell 时,我经常会做这样的事情
很快你会被狠狠地打击而不再这样做。`=`符号是一个赋值运算符,而不是一个比较运算符。您不能使用`=`符号将一个值与另一个值进行比较。
这样做的正确方法是在表达式的左侧定义要检查的值,并使用`eq`运算符。下面是`eq`和`ceq`运算符以及它们的使用示例。

注意当我们的变量与`adam`进行比较时`eq`返回了一个布尔`True`值,但`ceq`返回了一个布尔`False`值?这显示了两个运算符之间的大小写敏感性差异。
这对于标量(单一)值来说非常好,但你也可以使用这些运算符找到特定值的所有实例。例如,使用 PowerShell 的 -eq 运算符来过滤数组中的项目:

如果你有一个包含多个值的变量,比如一个数组,你可以使用 eq
和 ceq
来找到集合中所有值的实例。
请注意,它找到了我们尝试比较的整数 9 的所有实例。我经常使用这个方便的方法。
-NE 和 -CNE
在另一方面,你既有 ne
也有 cne
。它们与 eq
和 ceq
完全相反,但表现完全相同,只是相反。它们不测试相等性,而是测试不相等性。

I hope this gives a good explanation of the equality comparison operators. This really got me hung up as a newbie and it never really clicked for me until I was just beat into submission by error messages. I hope this post prevents the same beat down I received.