(10)Powershell賦值運算符(一)

    上一節介紹了Powershell中的內置變量,細節使勁戳這裏


    本節介紹Powershell中的賦值運算符,賦值運算符可向一個變量賦予一個或多個值。賦值運算符可以在賦值之前對值執行數值運算。

    

    Powershell支持以下賦值運算符。

運算符說明備註
=將變量的值設置爲指定值。
+=使變量的值增加指定值,或將指定值追加到現有值。
-=使變量的值減少指定值。
*=將變量的值與指定值相乘,或將指定值追加到現有值。第二個操作數必須是數字,詳細內容參考Powershell賦值運算符(二)
/=將變量的值除以指定值。兩個操作數都必須是數字,詳細內容參考Powershell賦值運算符(二)
%=
將變量的值除以指定值,然後將餘數(模)賦予變量。兩個操作數都必須是數字,詳細內容參考Powershell賦值運算符(二)
++使變量、可賦值屬性或數組元素的值增加 1。一元運算符,有前綴和後綴的形式,並且可賦值表達式必須是數字或是可以轉換爲數字。
--
使變量、可賦值屬性或數組元素的值減少 1。一元運算符,有前綴和後綴的形式,並且可賦值表達式必須是數字或是可以轉換爲數字。

    


  1. 賦值運算符的語法

    賦值運算符的語法如下:

    <可賦值表達式><賦值運算符(上表格列出的內容)><值>,

可賦值表達式包括變量和屬性,值可以是單個值,值數組,也可以是命令,表達式或是語句,例如

PS C:\> $a=1
PS C:\> $pro=Get-Process
PS C:\> $a="apple","orange","lemon","grape"

2. 賦值運算符(=)

    變量是存儲值的內存空間,使用賦值運算符可以將值存儲在變量中,新值可以替換變量的現有值,也可以將值追加到現有值。例如以下語句將字符串"Powershell"賦值給變量$myStr

PS C:\> $myStr="Powershell"

    PowerShell 中向變量賦值時,如果該變量不存在,則會創建該變量。例如,下面兩條賦值語句中的第一條創建 $a 變量並將值 1 賦予 $a。第二條賦值語句將值 3 賦予 $a。第一條語句創建一個新變量。第二條語句只更改該變量的值:

PS C:\> $a=1
PS C:\> $a=3

    PowerShell 中的變量沒有特定數據類型,除非進行轉換。如果變量僅包含一個對象,則變量採用該對象的數據類型。如果變量包含對象集合,則變量爲 System.Object 數據類型。因此,可以向該集合賦予任何類型的對象。例如下面的語句可以向變量添加進程對象、服務對象、字符串和整數,而不會生成錯誤:

PS C:\> $a=Get-Process
PS C:\> $a+=Get-Service
PS C:\> $a+="my string"
PS C:\> $a+=13

    賦值運算符 (=) 的優先級低於管道運算符 (|),所以在將命令管道的結果賦予變量時不需要圓括號。例如,下面的命令對計算機上的進程進行排序,然後將排序後的進程賦予 $a 變量:

PS C:\> $a=Get-Process | Sort-Object -Property name

    還可以將語句創建的值賦予變量,如下面的語句所示

PS C:\> $a=if($b -lt 0) { 0 } else { $b }

    -lt 是 less then 的縮寫,相當於高級語言中的<=,會在Powershell的比較運算符中講到。上面語句的意思是如果$b 的值小於 0 時將 0 賦予 $a 變量。如果 $b 的值不小於零,則將 $b 的值賦予 $a。

    如果要將哈希表賦予變量,請使用 PowerShell 中的標準哈希表表示法。一個 at 符號 (@),在其後鍵入使用分號 (;) 分隔、括在大括號 ({ }) 內的鍵/值對。例如,下面的語句將哈希表賦予 $a 變量:

PS C:\> $a=@{one=1; two=2;three=3}

    如果要將十六進制值賦予變量,請在值前面加上"0x"。PowerShell 會將十六進制值 (0x10) 轉換爲十進制值(本例中爲 16),然後將該值賦予 $a 變量。例如,以下語句將值 0x10 賦予變量 $a:

PS C:\> $a=0x10
PS C:\> $a
16

    如果要將指數值賦予變量,需要輸入根數字、字母"e"和一個表示 10 的倍數的數字。例如,若要將 3.1415 的 100 次冪值賦予 $a 變量,請輸入:

PS C:\> $a=3.1415e2
PS C:\> $a
314.15

    PowerShell 中還可以將千字節 (KB)、兆字節 (MB) 和千兆字節 (GB) 轉換爲字節。例如,如要將值 10 千字節賦予 $a 變量,請輸入:

PS C:\> $a=10kb

3. 加法賦值運算符(+=)

   加法賦值運算符 (+=) 可增加變量的值或將指定值追加到現有值。具體操作取決於變量是數字還是字符串類型,以及變量是包含單個值(標量)還是多個值(集合)。+=運算符組合了兩個運算。首先執行加法,然後賦值。因此,以下語句是等效的。    

PS C:\> $a+=2
PS C:\> $a=($a+2)

    如果變量包含單個數字值,則 += 運算符使現有值增加該運算符右側的數量。將運算符將得到的值賦予變量。例如:

PS C:\> $a=5
PS C:\> $a+=3
PS C:\> $a
8

    如果變量的值是字符串,則將該運算符右側的值追加到該字符串,如下所示:

PS C:\> $a="Windows"
PS C:\> $a+=" Powershell"
PS C:\> $a
Windows Powershell

    如果變量的值是數組,則 += 運算符將其右側的值追加到數組。除非通過轉換顯式指定數組的類型,否則可以將任何類型的值追加到數組,如下所示:

PS C:\> $a=1,2,3
PS C:\> $a+=4
PS C:\> $a
1
2
3
4
PS C:\> $a+="string"
PS C:\> $a
1
2
3
4
string

    如果變量的值是哈希表,則 += 運算符將其右側的值追加到該哈希表。不過,因爲只能向哈希表添加另一個哈希表,所以所有其他賦值都會失敗

例如,下面的命令將哈希表賦予 $a 變量。然後,該命令使用 += 運算符將另一個哈希表追加到現有哈希表,實際上是將一個新鍵/值對添加到現有哈希表。此命令成功,輸出如下所示:

PS C:\> $a=@{a=1;b=2;c=3}
PS C:\> $a+=@{four="4"}
PS C:\> $a

Name                           Value
----                           -----
a                              1
b                              2
four                           4
c                              3

    下面的命令試圖將一個整數 (1) 追加到 $a 變量中的哈希表。此命令將失敗:

PS C:\> $a=@{a=1; b=2; c=3}
PS C:\> $a+1
只能向哈希表添加另一個哈希表。
所在位置 行:1 字符: 4
+ $a+ <<<< 1
    + CategoryInfo          : InvalidOperation: (1:Int32) [], RuntimeException
    + FullyQualifiedErrorId : AddHashTableToNonHashTable

4. 減法賦值運算符 (-=)

    減法賦值運算符 (-=) 使變量的值減少在該運算符右側指定的值。此運算符不能用於字符串變量,也不能用於從集合中刪除元素。-= 運算符組合了兩個運算。首先執行減法,然後賦值。因此,以下語句是等效的:    

PS C:\> $a-=2
PS C:\> $a=($a-2)

    以下語句使用 -= 運算符減少變量的值:

PS C:\> $a=9
PS C:\> $a-=4
PS C:\> $a
5

    還可以使用 -= 賦值運算符減少數值數組的成員的值。請指定要更改的數組元素的索引。在下面的示例中,數組中第三個元素(元素 2)的值減少 1:

PS C:\> $a=1,3,5
PS C:\> $a[1]-=1
PS C:\> $a
1
2
5

    不能使用 -= 運算符刪除變量的值。要刪除賦予變量的所有值,請使用 Clear-Item 或 Clear-Variable cmdlet 將值 $null 或 "" 賦予變量。

PS C:\> $a=8
PS C:\> $a=$null
PS C:\> $a

    要從數組中刪除特定值,請使用數組表示法將值 $null 賦予該特定項。例如,下面的語句從數組中刪除第二個值(索引位置 1):

PS C:\> $a=1,2,4
PS C:\> $a
1
2
4
PS C:\> $a[1]=$null
PS C:\> $a
1
4

    要刪除變量,請使用 Remove-Variable cmdlet。在變量已顯式轉換爲特定數據類型,而您需要非類型化變量時,可以使用此方法。下面的命令刪除 $a 變量:

PS C:\> $a=5
PS C:\> Remove-Variable a
PS C:\> $a

    需要注意的是,使用Remove-Variable命令時,使用的命令名稱,變量之前沒有美元符號($)。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章