字符串类型在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. 连续重复两次最外层引号表示一个引号。只要这三条记住,引号规则就不会成为困难。