PowerShell和一般程式語言一樣,可以使用變數作為運算與儲存暫存資料的功用,接下來限量在這篇要來說明一些變數的相關規則。
 
 
 
變數宣告
PowerShell屬於Script類型的語言,所以在整個Script語法裡穿插了許多程式邏輯判斷與命令列執行,故PowerShell規定變數命名要以$符號作為命名開頭。這裡要注意的是,並不是所有的變數都可以隨便命名,在PowerShell執行的時候,會有一些預設就存在的系統變數,所以在命名變數的時候要注意是不是和系統變數衝突到,如果不知道那些是系統變數可以透過執行Get-Variable來查看目前有哪些系統變數與已以命名過的變數名稱。
變數宣告時,其資料型態會根據後面賦予的值而改變,就如同C#中將變數宣告成var一樣,但不同的是PowerShell變數宣告在一開始可以不用給初始值。和一般程式語言一樣,限量建議在宣告變數時盡量先給定一個初始值,減少Null Reference所造成的錯誤發生,為了測試資料型態是否真的隨著初始值決定,可以用GetType()方法來驗證資料型態,或可以使用-is與-isnot來確定資料型態是不是預期的結果。
| 
方法 | 
描述 | 
| 
$var.GetType() | 
取得該變數的資料型態名稱 | 
| 
$var
  -is [DataType] | 
判斷該變數的資料型態是否為預期的資料型態,True為預期的資料型態 | 
| 
$var
  -isnot [DataType] | 
與is方法相反 | 
資料轉型
在進行一些資料運算時,常常會遇到資料轉型的問題,前面提到PowerShell宣告變數時會自動轉換成初始值的資料型態,其實PowerShell變數在進行不同型別的運算時也會將變數自動轉型,在講解這些自動轉型之前我們先來看看PowerShell有哪些資料型態,下表為PowerShell常用的幾個資料型態:
| 
資料型態 | 
描述 | 
| 
[string] | 
Unicode字元字串(System.String) | 
| 
[char] | 
Unicode 16-bit字元(System.Char) | 
| 
[byte] | 
8-bit unsigned字元(System.Byte) | 
| 
[int] | 
32-bit signed整數(System.Int32) | 
| 
[long] | 
64-bit signed整數(System.Int64) | 
| 
[bool] | 
True, False布林值(System.Boolean) | 
| 
[decimal] | 
128-bit十進位數值(System.Decimal) | 
| 
[single] | 
32-bit單精度浮點數(System.Single, float) | 
| 
[double] | 
64-bit雙精度浮點數(System.Double) | 
| 
[datetime] | 
日期時間(System.DateTime) | 
| 
[xml] | 
XML物件 | 
| 
[array] | 
陣列值 | 
| 
[hashtable] | 
HashTable物件 | 
例如我們宣告了一個變數$a = 1.99,接著利用-as方法將$a的值轉為int給$b,結果可以看到$b的資料型態為int而且值變成了2(PowerShell在浮點數轉為整數時會自動進行四捨五入);或者可以直接用強制轉型的方式,在$a前方放置資料型態就可轉為指定的資料型態。
| 
方法 | 
描述 | 
| 
$var
  -as [DataType] | 
將變數$var值轉為指定的資料型態,類似C#中的as,例如: var b = 1.99 as int; | 
接下來讓我們看看一些自動轉型的運算,我們以下面的範例來看看:
$a為數值$b為字串,當$a+$b時會自動轉成數值,所以結果為3,當$b+$a時會自動轉成字串,所以結果為"21"。如果再$a宣告時就指定資料型態,那結果會如下:
看完了以上的講解後,是不是覺得PowerShell的變數就和一般程式語言的變數一樣,就是因為類似程式語言的特性,所以讓有程式語言底子的開發者能夠更加快速的上手。
參考來源:





留言
張貼留言