Board logo

标题: [转载教程] 【探索PowerShell 】【十五】引号与转义字符 [打印本页]

作者: HAT    时间: 2013-9-1 11:22     标题: 【探索PowerShell 】【十五】引号与转义字符

【探索PowerShell 】【一】初识http://www.bathome.net/thread-26144-1-1.html
【探索PowerShell 】【二】基本操作http://www.bathome.net/thread-26148-1-1.html
【探索PowerShell 】【三】PowerShell下使用Aliaseshttp://www.bathome.net/thread-26149-1-1.html
【探索PowerShell 】【四】PowerShell的对象、格式与参数http://www.bathome.net/thread-26159-1-1.html
【探索PowerShell 】【五】PowerShell基础知识http://www.bathome.net/thread-26162-1-1.html
【探索PowerShell 】【六】脚本基础简要http://www.bathome.net/thread-26163-1-1.html
【探索PowerShell 】【七】变量http://www.bathome.net/thread-26165-1-1.html
【探索PowerShell 】【八】数组、哈希表(附:复制粘贴技巧)http://www.bathome.net/thread-26166-1-1.html
【探索PowerShell 】【九】条件控制、逻辑http://www.bathome.net/thread-26167-1-1.html
【探索PowerShell 】【十】循环语句http://www.bathome.net/thread-26168-1-1.html
【探索PowerShell 】【十一】函数http://www.bathome.net/thread-26174-1-1.html
【探索PowerShell 】【十二】筛选器 - Filtershttp://www.bathome.net/thread-26187-1-1.html
【探索PowerShell 】【十三】WMI对象http://www.bathome.net/thread-26188-1-1.html
【探索PowerShell 】【十四】使用WMI对象的方法http://www.bathome.net/thread-26189-1-1.html
【探索PowerShell 】【十五】引号与转义字符http://www.bathome.net/thread-26190-1-1.html

在PowerShell中,单引号与双引号有着不同的功能和作用。引号的使用规则往往跟变量的代换,以及特殊字符有关。

基础用法

总结说来:

单引号任何情况下都只表示引号内自身的字符。也就是说,单引号内的内容不会进行变量的代换与字符的转义。而在双引号中,则允许进行变量代换和字符转义。在对变量进行代换和字符进行转义的判断上,是由命令最外层的引号决定的。

详细介绍,还是要用示例来说明。

使用双引号输出:
  1. $a="World"
  2. "Hello, $a"
复制代码
运行结果为:

PS E:\> $a="World"
PS E:\> "Hello, $a"
Hello, World


若使用单引号,将命令改为:
  1. $a="World"
  2. 'Hello, $a'
复制代码
则输出结果为:

PS E:\> $a="World"
PS E:\> 'Hello, $a'
Hello, $a


这一点很简单,在本教程之前的文章中也有所提及。

输出引号

在单引号中,如果要打印单引号,只需要使单引号重复即可,即,两个单引号会产生一个单引号输出。

例如:
  1. $a="PowerShell"
  2. 'I''m $a'
复制代码
运行结果为:

PS E:\> $a="PowerShell"
PS E:\> 'I''m $a'
I'm $a


在单引号中输出双引号可以直接输出,不需要进行转换。如:

PS E:\> 'I"m $a'
I"m $a


同样在双引号中,如果要输出单引号,也不需要转换,直接打印即可。 而且,如果需要在双引号中打印双引号,也只需要重复双引号即可,即,两个双引号会产生一个双引号输出。

例1:

PS E:\> "Print a single quote:'"
Print a single quote:'
PS E:\> "Print a double quote:"" "
Print a double quote:"


例2:
  1. $a="PowerShell"
  2. """My name is $a"",this program said."
复制代码
运行结果如下:

PS E:\> """My name is $a"",this program said."
"My name is PowerShell",this program said.


使用转义字符

为了输出一些特殊字符,我们需要使用转义字符,在PowerShell中,转义序列由反引号定义,也就是键盘F1下面与波浪线同键的字符" ` "。

常用的转义字符串有:

`'单引号
`"双引号
`0空值  NULL
`a报警
`b退格
`f跳页
`n新行
`r换行
`t横向Tab键(水平制表符)
`v纵向Tab键(纵向制表符)


当然,在双引号中的变量名前使用反引号,也会取消此变量代换的功能。

例如上例中:
  1. $a="PowerShell"
  2. """My name is `$a"",this program said."
复制代码
输出结果将为:

"My name is $a",this program said.

需要说明的另一点,就是反引号的另一个作用:承接命令语句。

当我们需要输入的命令太长,则可以在命令中合适的地方使用反引号,另起一行接着上条命令书写。至于前面所指的“合适”的地方,简单的说,总不能将一个单词拆开吧。

例如:
  1. Get-WmiObject Win32_NetworkAdapterConfiguration | Get-Member -MemberType Methods | Format-List
复制代码
上面的命令非常长,不仅不便于我们的输入,也不便于修改、查看,所以,可以使用反引号修改如下:
  1. Get-WmiObject Win32_NetworkAdapterConfiguration |`
  2. Get-Member -MemberType Methods |`
  3. Format-List
复制代码
只需在命令结束后多敲一次回车,表示全部命令输入完毕即可,在命令中使用反引号与否,最终的运行结果是一样的。

使用反引号,不仅能够帮助我们更加方便的书写,在编写脚本时也利于命令的修改,查看。个人感觉,尤其在管道符后面使用反引号,十分利于理清命令结构。

至于其他转义字符的使用,其实都如同于在编程语言中或者其他脚本中的使用,方法都是一样的。就请各位自己试一试吧。

本文出自 “马睿的技术博客” 博客,请务必保留此出处http://marui.blog.51cto.com/1034148/300603




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2