理解PowerShell EQ運算符

你是否在理解 PowerShell 比较运算符(如eqneceqcne)方面感到困惑?如果是的话,请继续阅读。

作为一个有软件开发背景的人,我第一次看到 PowerShell 的比较运算符eqceqcne等时,我感到很困惑。所有其他编程语言都有比较运算符,但 PowerShell 的比较运算符不太一样。我习惯于使用==<>

不仅语法与典型的编程语言完全不同,而且在比较值的集合时也有不同的行为。

当我学习 PowerShell 时,这真的让我困惑了很久,但现在它看起来就像是那句老啤酒广告说的;它是一种习 acquired taste。

让我们简要介绍一下比较运算符是什么,如果你不熟悉的话,并深入探讨 PowerShell 引入的细微差别。不久之后,你就能毫不费力地在 PowerShell 脚本中使用运算符了。

如我所提到的,所有编程/脚本语言都有比较运算符。从最基本的意义上讲,比较运算符是必需的,用于评估不同事物与其他事物之间的差异(如果有)。它们用于获取两个对象,并查看这两个对象之间的差异(如果有)。

在 PowerShell 中,运算符还可以用于在值的集合中查找元素。

對於這篇文章,我將介紹相等運算子以及PowerShell如何使用它們。這些運算子是eqne,它們的區分大小寫的對應運算子是ceqcne。完整的清單可以參考Technet網站,或者在PowerShell控制台中使用Get-Help about_comparison_operators

PowerShell中的-EQ和-CEQ

如果您需要檢查一個物件是否等於另一個物件,您必須使用eq(不區分大小寫)或ceq(區分大小寫)運算子。這些運算子將測試您想要比較的每個實體的值。

當我剛開始學習PowerShell時,我經常會像這樣做

$string = 'Adam'
if ($string = 'Adam') {
    'string is equal to Adam'
}

您很快就會被警告不要這樣做。等號(=)是一個賦值運算子,而不是比較運算子。您不能使用等號(=)來比較一個值與另一個值。

正確的方法是在表達式的左側定義要檢查的值並使用eq運算子。這裡有一個eqceq運算子的示例以及它們的使用方法。

PowerShell’s eq vs ceq

注意,當將我們的變數與adam進行比較時,eq返回一個布林值True,但ceq返回一個布林值False?這顯示了這兩個運算子之間區分大小寫的差異。

這對於純量(單一)值來說非常好,但您也可以使用這些運算符找到特定值的所有實例。例如,使用 PowerShell 的 -eq 運算符來過濾陣列中的項目:

Using Eq to search arrays

如果您有一個包含多個值的變數,例如陣列,您可以使用 eqceq 找到集合內的所有值的實例。

請注意,它找到了我們嘗試比較的整數 9 的所有實例。我經常使用這個方便的方法。

-NE 和 -CNE

在相反的一面,您有 necne。它們與 eqceq 完全相反,但行為完全相同,只是相反。它們不測試相等性,而是測試不相等性。

PowerShells ne vs. cne

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.

Source:
https://adamtheautomator.com/powershell-eq/