字符串字面值

字符串類型在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. 連續重複兩次最外層引號表示一個引號。只要這三條記住,引號規則就不會成爲困難。
相關文章
相關標籤/搜索