PowerShell - 變數

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



參考來源:






留言