本系列博客從這一節開始是Powershell的語法知識,在開始學習語法之前,希望你對Powershell有個基本的瞭解,比如開發工具的使用,面向對象等特性,詳細內容使勁戳這裏(1)-(6)的內容。
本節主要介紹Powershell中的算術運算符。
Powershell支持以下算術運算符
運算符 | 用法 | 例子 | 注意事項 |
---|---|---|---|
+ | 將整數相加;連接字符串、數組和哈希表。 | 2+5;"str1"+"str2" | Powershell是進行算數相加還是字符串的連接是以第一個操作數的類型爲準 |
- | 兩個值相減 | 2-1;(Get-Date).Day-1 | |
- | 對數字取負 | -2+1 | |
* | 將整數相乘;按指定次數複製字符串和數組 | 2*3;"str"*3 | 返回輸入字符串的多個副本 |
/ | 將兩個值相除 | 4/2 | |
% | 取餘(返回除法運算的餘數) |
下面是這些算術運算符的優先級
圓括號() > 取負數(-) > *, /, % > 加減法
注意:如果記住這些優先級太有挑戰性,就瞭解下,只要知道括號有最高的優先級就可以了。不要寫那些運算順序含混不清的代碼(腳本或是命令)。分辨清晰與否的標誌就是,無論何時,你都應當可以準確表述算數的運算順序。
下面是在Powershell中使用算數運算符的例子
PS C:\Documents and Settings\Administrator> 1+2 3 PS C:\Documents and Settings\Administrator> 2-1 1 PS C:\Documents and Settings\Administrator> -7+4 -3 PS C:\Documents and Settings\Administrator> 3*7 21 PS C:\Documents and Settings\Administrator> 7/3 2.33333333333333 PS C:\Documents and Settings\Administrator> 7%3 1 PS C:\Documents and Settings\Administrator> "str"*2 strstr PS C:\Documents and Settings\Administrator> "Windows"+" "+"Powershell" Windows Powershell PS C:\Documents and Settings\Administrator> 2*"str" “*”運算符失敗: 無法將值“str”轉換爲類型“System.Int32”。錯誤:“輸入字符串的格式不正確。”。 所在位置 行:1 字符: 3 + 2* <<<< "str" + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : OperatorFailed
Powershell加法和乘法不是嚴格可交換的
在上面我們提到,對於運算符"+",Powershell是進行相加還是字符串的連接是以第一個操作數的類型爲準的。舉個例子
PS C:\Documents and Settings\Administrator> "file1"+1 file11 PS C:\Documents and Settings\Administrator> 1+"file1" 無法將值“file1”轉換爲類型“System.Int32”。錯誤:“輸入字符串的格式不正確。” 所在位置 行:1 字符: 3 + 1+ <<<< "file1" + CategoryInfo : NotSpecified: (:) [], RuntimeException + FullyQualifiedErrorId : RuntimeException
對於乘法運算符"*",同樣以第一個操作數的類型爲準
PS C:\Documents and Settings\Administrator> "str"*2 strstr PS C:\Documents and Settings\Administrator> 2*"str" “*”運算符失敗: 無法將值“str”轉換爲類型“System.Int32”。錯誤:“輸入字符串的格式不正確。”。 所在位置 行:1 字符: 3 + 2* <<<< "str" + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : OperatorFailed
由以上演示結果可知,在Powershell中,加法和乘法不是嚴格可交換的,換句話說,Powershell中,(a + b) 並不總是等於 (b + a),而 (a * b) 也不總是等於 (b * a)。
除此之外,Powershell中的加法"+"對數組和哈希表也可以操作,會在數組節做詳細討論。