就像其他编程语言一样,PowerShell也有各种比较运算符。然而,与其他语言不同,这些比较运算符可能看起来有些奇怪。与==
不同,你需要使用eq
。与<>
不同,你需要使用ne
。这可能对新手来说很困惑。让我们在本文中了解一下PowerShell的like运算符和其他比较运算符。
使用eq
和ceq
运算符测试相等性
在PowerShell中,要检查一个对象是否等于另一个对象,可以使用eq
运算符。eq
运算符可以比较许多类型的简单对象,例如字符串、布尔值、整数等等。当使用时,eq
运算符将根据结果返回布尔值True
或False
。
-eq
运算符需要两个值进行比较。假设你将一个字符串赋给一个名为$string
的变量。你想将这个变量的值与字符串值"PowerShell"
进行比较,以确保它们相等。
在下面的示例中,您可以看到我们将值PowerShell
分配给变量$string
。然后,使用eq
运算符,示例将$string
的值与字符串powershell
进行比较。简单吧?但是等等,它们并不真的相同。
请注意,
=
是赋值运算符,而不是比较运算符。在PowerShell中,您不能使用=
将一个值与另一个值进行比较。
使用ceq
运算符测试大小写敏感性
在上面的示例中,注意eq
返回一个布尔值True
,即使字符串不是完全相同。这种行为是因为eq
运算符是大小写不敏感的。要测试大小写敏感的相等性,请使用ceq
运算符。ceq
运算符与eq
完全相同,唯一的区别是它区分大小写。
您可以在以下代码片段中看到使用ceq
的示例。现在请注意PowerShell看到了区分大小写的差异。
使用ne
和cne
运算符测试不相等
正如eq
和ceq
测试相等性一样,PowerShell还有一对执行相反操作的运算符,称为ne
和cne
。与它们的对应运算符一样,这两个运算符执行完全相同的操作,只是相反的。
测试集合中的项目
通常,eq
和ceq
運算符用於標量或單個值,如字符串、整數和布爾值。但是,這些運算符也可以在集合(如數組)中找到包含特定值的實例。
請注意下面的示例中,我們創建了一個包含12個整數的數組。也許您想找到該數組中等於9的所有實例。沒問題,使用eq
運算符對數組進行比較,返回所有與比較整數相等的實例。
測試集合是否包含值
既然您剛剛學會使用eq
運算符在數組中查找實例,我們可以進一步介紹“包含”運算符。這些運算符包括contains
、notcontains
、in
和notin
。這些運算符返回一個布爾值True
或False
,用於判斷集合是否包含某個實例。
請查看以下示例。在這個示例中,我們創建了一個包含九個整數的數組。如果您想要一個簡單的是/否答案,即該數組是否包含某個整數,您可以使用contains
或notcontains
。
同樣,您還可以使用in
和notin
運算符。這些運算符與contains
和notcontains
幾乎相同,只有一個例外:比較的值在左邊而不是右邊。
使用gt
和ge
運算符進行“大於”測試
如果您需要测试一个数字(整数)是否大于另一个数字,或者可能大于或等于另一个数字,会发生什么?您可以使用gt
和ge
运算符。这些运算符用于比较整数。
与其他运算符一样,这些运算符根据一个整数是否大于另一个整数返回布尔值True
或False
。这两个运算符都测试左侧整数是否大于或大于等于右侧整数。
在下面的示例中,您可以看到每个运算符的行为。
与允许您在集合中查找实例的eq
运算符类似,ge
和gt
运算符也可以做同样的事情。PowerShell会遍历集合中的每个项,并将每个值与您提供的值进行比较。在下面的示例中,您可以看到一个很好的示例。
使用lt
和le
运算符进行“小于”测试
与gt
和ge
运算符类似,lt
和le
运算符执行相同的功能,但相反。lt
和le
运算符比较两个值,测试左侧的整数是否小于或小于等于右侧的整数。
如下面的示例所示,与gt
和ge
相比,将每个值与集合中的每个值进行比较的相同功能完全相同。
使用PowerShell Like运算符进行通配符匹配
到目前为止,您已经学会了如何进行1:1的匹配。到目前为止,所有使用的运算符都是将一个完整的值与另一个进行比较,但是PowerShell还有另一个技巧。您还可以根据通配符或星号来比较值。
假设您只知道字符串的一部分字符。您无法使用eq
,因为eq
要求您知道整个字符串。使用PowerShell的like运算符,您不需要知道整个字符串。要测试一个值是否类似于另一个值,您可以用通配符替换您不知道的部分。
与其他运算符一样,这个功能也可以应用于集合。
您可以在下面看到PowerShell的like运算符和它的区分大小写的兄弟clike
的示例。
运算符-notlike
如果找不到匹配项,则返回布尔值True
,如果有匹配项,则返回False
。如果针对一个集合使用,它将返回所有不与-notlike
运算符右侧给定模式匹配的其他值。要将区分大小写的模式添加到模式中,请使用-cnotlike
运算符。
基于正则表达式进行匹配
PowerShell 的類似運算子及其相關功能非常方便,但一旦需要更複雜的匹配,你可以深入研究正則表達式(regex)的深淵世界。使用match
和notmatch
運算子,你可以使用正則表達式進行極其複雜的字串匹配。
與 PowerShell 的類似運算子類似,match
及其相反的對應運算子notmatch
比較兩個字串並返回布林值True
或False
。同樣,像其他運算子一樣,這種行為也可以應用於集合,正如下面的示例所示。
總結
在本文中,你學到了 PowerShell 的類似運算子和其他運算子,以及如何對單個值和集合使用每個運算子。你已經看到了根據運算子以及是否是純量或集合,輸出的不同之處。
此外,你還看到了具有區分大小寫的運算子,匹配運算子如何基於正則表達式或通配符進行匹配,以及包含運算子用於測試對象是否包含特定值或特定對象中是否存在某個值。
