首页/系统/Windows 运维速查/引号规则与转义
PowerShell 基础66 条

引号规则与转义

单引号是字面量、双引号可插值:理解 $ 展开与反引号转义,是避免脚本输出与预期不符的基础。

Windows 运维速查系统更新于 2026-10-13

引号规则与转义

PowerShell 里单引号与双引号的区别只有一条,但影响面很大:单引号内的一切都是字面内容,双引号内会先做变量替换与转义处理。这条规则决定了字符串里出现美元符号、反引号或换行时该怎么写。路径与含特殊字符的文本用单引号最安全;需要拼接变量或插入特殊字符时再用双引号。把两者混用,常见结果就是「变量没被替换」或「本该是文本的内容被展开成了空值」。

基本信息

适用平台Windows PowerShell 5.1 与 PowerShell 7 及以上
单引号内部内容全部按字面处理,不替换变量,也不解释转义
双引号会替换变量与子表达式,并解释转义字符
转义字符双引号内用反引号表示换行、制表与字面符号
单引号内表示单引号连续写两个单引号,而不是用反斜杠
适用建议路径与固定文本用单引号,需要插值时才用双引号

典型使用场景

  • 书写含美元符号的文本,如金额、密码片段,避免被当作变量展开
  • 拼接提示信息:把变量值嵌入一句可读的说明里
  • 在双引号内插入换行或制表符,控制输出格式
  • 书写含空格与特殊字符的路径,避免被拆成多段
  • 构造正则表达式:注意反斜杠在两种引号下的表现差异
  • 把命令输出嵌入字符串,用子表达式在双引号内取结果

常用示例

常用示例
# 单引号:变量不会被替换
$name = 'web01'
'主机: $name'
# 双引号:变量会被替换
"主机: $name"
# 含美元符号的文本用单引号最安全
$msg = '价格为 $100'
# 双引号内的子表达式
"当前时间: $(Get-Date -Format 'HH:mm')"
# 反引号转义:换行与制表
"第一行`n第二行`t带制表"
# 字面美元符号
"成本 `$100"
# 单引号内表示单引号:连续两个
'it''s ok'
# 路径含空格:两种引号都可,单引号更省心
Copy-Item 'D:\Program Files\App\a.txt' 'D:\Bak\a.txt'

写法对照

写法内容结果
单引号包裹变量名'主机: $name'原样输出不替换
双引号包裹变量名"主机: $name"替换为变量实际值
双引号内子表达式"$(表达式)"先执行表达式再插入结果
双引号内反引号加 n换行转义输出真正的换行
双引号内反引号加美元符号字面美元符号输出美元符号本身
单引号内两个单引号表示一个单引号用于含单引号的文本
路径含空格或方括号时用单引号最稳:既不担心变量被展开,也不用担心特殊字符被解释。需要把变量拼进路径时再改用双引号。
构造正则时尤其要留意引号:不同引号对反斜杠的处理不同,容易出现「表达式看起来对但匹配不到」的情况,写完后先用一条样本数据验证。

易错点

  • 把含美元符号的文本放进双引号:会被当作变量展开,金额或密码类内容会变成空值或错误内容
  • 在单引号内用反斜杠转义单引号:单引号内不解释转义,正确写法是连续写两个单引号
  • 以为两种引号等价:单引号不替换变量,拼接字符串时会得到字面内容
  • 正则里反斜杠与引号组合写错:表达式看似正确却匹配不到,需要先用样本验证
  • 路径不加引号:含空格时会被拆成多段参数,命令行为与预期不同

数据来源与参考

  • Microsoft Learn:about_Quoting_Rules

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌