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的變數就和一般程式語言的變數一樣,就是因為類似程式語言的特性,所以讓有程式語言底子的開發者能夠更加快速的上手。
參考來源:
留言
張貼留言