[原創][PowerShell教程][08]字符串字面值

    字符串類型在PowerShell中的使用中頻率也非常高,對比其他shell來說,雖然PowerShell使用字符串的情況變少了,但是在功能上甚至可以說得到了增強。主要的原因可以歸功於.Net Framework類庫。System.String類中包含了各式各樣的方法,讓使用者可以方便的處理字符串。
    在PowerShell中,字符串就是.Net Framework中的16-bit Unicode字符序列。因此,日常使用時,可以正確處理大部分常用的各國字符。
    說起字符串,就必須要解釋引號規則,引號規則往往總是與兩個概念有關:特殊字符的保護以及變量代換
    變量代換有時候也被爲變量展開變量篡改,通過這種手段,可以簡化字符串表示,使腳本的閱讀者或維護者更加方便的理解代碼。例如:
PS C:/> $a = 'Windows PowerShell'
PS C:/> "Hello, $a"
Hello, Windows PowerShell

    通過將變量名稱替換成變量的值,使變量能夠在字符串展開成原始值的過程就是變量代換。
 
單引號

    單引號的功能有時候會讓人愛不釋手,因爲單引號中任何字符都只表示自己。換句話來說,單引號中不會進行變量代換,也不會對任何轉義序列進行處理,你看到的“幾乎”就是你輸入的字符串。之所以我用“幾乎”這副詞來強調,是因爲引號規則中有個特例,如果需要在單引號的字符串中包括單引號該怎麼辦呢?爲了解決這種情況,Windows PowerShell採用了類似CSV文件中的解決方法:通過使用連續兩個引號來表示一個引號。下面是幾個單引號字符串的例子:
PS C:/> $shells = 'PowerShell'  # 設置變量$shells爲字符串PowerShell
PS C:/> 'What''up, $shells'     # 兩個連個連續的單引號表示一個單引號
What'up, $shells
PS C:/> 'What'up, $shells'      # 因爲單引號不匹配,引起錯誤
Unexpected token 'up' in expression or statement.
At line:1 char:9
+ 'What'up, <<<<  $shells'

    第一個例子中,我們使用了兩個連續的單引號來表示在字符串中應該包含一個單引號。第二個例子中展示瞭如果缺少單引號,就會導致引號不匹配,產生錯誤信息。另外需要注意的是在單引號中$shells變量沒有被代換。
 
雙引號

    雙引號,可以形容他是個變色龍,如果雙引號包含變量,則可以隨着腳本的執行,將結果動態的附加進入。雙引號中允許:變量代換和轉義序列。說到這裏,必須要嘮叨一下Windows PowerShell中怪異的轉移序列。在常見的語言中,例如:C、C#、Java、Perl和Python等。轉義字符都是反斜線“/”(HTML和XML屬於例外)。由於Windows操作系統歷史原因,反斜線“/”一直被用作目錄分隔符。如果PowerShell使用反斜線作爲轉義字符,就會產生兩個可怕的情況:要麼在PowerShell中用正斜線“/”作爲分隔符,要麼每次都需要連續使用兩個反斜線進行轉義處理。無論上面哪種情況,PowerShell要麼與Windows的定義不一致,要麼用戶使用時就會抱怨輸入太多的反斜線。最後PowerShell團隊決定:轉義字符選擇反引號(backtick或者back quote)“`”,反引號位於數字鍵1的左邊。轉義序列如下所示:
         `'   -- Single quote
         `"   -- Double quote
         `0   -- Null
         `a   -- Alert
         `b   -- Backspace
         `f   -- Form feed
         `n   -- New line
         `r   -- Carriage return
         `t   -- Horizontal tab
         `v   -- Vertical tab
    雖然這些長相怪異的轉移序列可能嚇到你了,但是,相信它不會阻礙您學習PowerShell。讓我們來雙引號中的變量代換以及轉移序列使用。
PS C:/> $shell = "PowerShell"
PS C:/> "Who are you?`n$shell"
Who are you?
PowerShell
PS C:/> "`$shell is $shell"
$shell is PowerShell
PS C:/> "我們來看看重疊雙引號的效果"""
我們來看看重疊雙引號的效果"

    第一個例子中,我們使用換行的轉移序列,也使用了變量代換。第二例子,我們使用“`$”來輸出變量和變量的值。最後我們看到了與單引號相同的特性,如果連續兩個雙引號表示一個雙引號。下面的例子,我們看看單引號和雙引號的對比,以及相互包含時的特性:
PS C:/> "'`$shell is $shell'"
'$shell is PowerShell'
PS C:/> '"`$shell is $shell"'
"`$shell is $shell"
    如果大家已經吸收了前面所介紹的知識,那麼這個例子的結果應該非常好解釋。我們對單引號雙引號做個簡單的概括:1. 單引號中不支持變量代換和轉義序列;雙引號中允許變量代換以及轉義序列。2. 根據最外層的引號決定字符串如何被處理。3. 連續重複兩次最外層引號表示一個引號。只要這三條記住,引號規則就不會成爲困難。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章