PowerShell的单引号和反引号

【PowerShell专栏】PowerShell中的单引号与双引号 在PowerShell中,单引号和双引号处理变量时存在差异。使用单引号('This is $a')会直接输出变量名$a,而双引号("This is $a")则会解析变量并输出其值。这是因为单引号将内容视为纯字符串,而双引号会进行变量替换。例如$a='PowerShell'时,双引号会输出"This is PowerShell"而非变量名。这一特性是PowerShell字符串处理的重要区别。 阅读详情

作者: Edengundam(马涛)

今天思考了很久, WMI对于Windows来说是非常重要的一个工具. 包含了很多特性, 目前我正在看WMI关于事件和WQL的资料. PowerShell在今后也会提供WMI的供应程序(provider). 

不过今天我想介绍PowerShell的单引号和反引号, 以及与Bash, Perl之间的一些对比. 学习任何事务时候, 开始用的是相似性进行记忆, 但是随着知识的积累, 你最终还会一定会引入对比记忆. 不过根据笔者在学习C, C#, bash, Perl, PowerShell的过程中, 始终认为, 首先应该以相似性为主. 这点在我学习BRE, ERE, ARE, 即基本正则表达式(废弃), 扩展正则表达式(现代正则表达式), 高级正则表达式时, 给我印象最为深刻.

如果您对bash, Perl不了解, 也没有关系, 之所以要对比, 只是为了告诉您: 伟大的思想, 表现往往是一致的. 再稍后, 我会单独来讲双引号. 其实只要记住规则, PowerShell中的引号可要比bash的简单很多了(准确说是传统的sh, 因为bash中最好使用'$()', 而避免反引号的使用).

在bash, Perl, PowerShell中, 对引号的比较往往涉及如下三个方面: 变量展开(也被称为: 变量代换, 变量篡改. ), 转义字符, 引号自身.

 

 
变量代换
转义字符支持程度
单引号自身引用
Bash
不允许
不允许
不允许
Perl
不允许
允许两种,见注1
见注1
PowerShell
不允许
不允许
见注2
 注1: Perl语言中, 单引号中允许出现两种转义序列: “//”和”/’”, 通过此方法, 可以在单引号中, 引用单引号.
注2: PowerShell中, 采取了一种更加通用的方法来引用单引号, 这种规则与csv文件, 一些数据库SQL语句语法一致, 既将连续出现的两个单引号当作一个单引号来处理, 请参见例子.

在我们看例子前, 我们先来看看转义字符. 在C, C++, C#, Java, ksh, bash, Perl等等语言中, 转义字符都是反斜线(/). 通过特定语法规则, 使用转义字符可以构建被称为转义字符序列的特殊表达式. 这种表达式, 往往通知语言的词法分析模块, 对该转义序列进行特殊处理.

由于历史原因, Dos, Windows操作系统使用反斜线作为路径的分隔符, 这使得PowerShell团队做出了惊人的抉择, 使用反引号(重音符号)作为转义字符. 这种惊人的不一致, 让有类似我举例语言背景的人们可能很恶心(我的第一反应就是这样). PowerShell团队做出这种无奈的举动也是事出有因的. 如果遵照传统, 那么我们在PowerShell中使用目录时候, 恐怕都要连续使用两个反斜线才能干活, 这恐怕会让我们疯掉>_<. 正如PowerShell团队的架构师所说, 其实用反引号虽然开始不习惯, 但是你只需要几分钟去适应. 反正它都是转义字符而已, 再说转移序列又没有变化^_^.

PowerShell中支持的转移序列有点少, 特别是相比Perl的来说:

`'    单引号
`"    双引号
`0    空值
`a    警报
`b    退格
`f    换页
`n    新行
`r    回车
`t    水平制表
`v    垂直制表

正如你所见到的, 除了转义字符变了, 其他的都没有变. 在Perl中还有一些功能强大的转移序列, 这里我就不再多说, 有兴趣的人可以参考关于Perl的书籍. 这样的转移序列例如: /U, /E, /L, /l, /u.

在我们来看几个例子(转义序列的例子放到下次举例):

PS C:> 'My money is on the way to my Home'
My money is on the way to my Home
PS C
:> $money = 100
PS C
:> 'My $money is on the way to my Home'
My $money is on the way to my Home
PS C
:> 'Test escape sequences: `0'
Test escape sequences
: `0
PS C
:> 'Test escape sequences: `n'
Test escape sequences
: `n
PS C
:> 'Test escape sequences: `r'
Test escape sequences
: `r
PS C
:> 'Test escape sequences: `r`n'
Test escape sequences
: `r`n
PS C
:> 'Test doubling up single quotes: '''
Test doubling up single quotes
: '
PS C:> 
'Test doubling up single quotes: ''End'
Test doubling up single quotes: 
'End
PS C
:> 'Test doubling up single quotes: 'Wrong''
表达式或语句中出现意外标记“Wrong”。
所在位置 行
:1 字符: 41
+ 'Test doubling up single quotes: 'Wrong'' <<<<

我相信, 这些例子对于聪明的您来说, 应该不需要过多解释. 您一定要看清楚"单引号"和"反引号". 经过无数次事实证明(这些证明一般都是别人在论坛求助时发生的, 我曾经遇到过几次), 大部分人, 第一眼看到单引号, 反引号, 双引号时, 会错误的使用另一种引号. 这往往缘于他们对引号的不了解, 如果对引号的特性很清楚, 在看到引号时, 代码编写者的意图, 您也一定猜测到了.

OK, 由于明天要去看病, 今天只啰唆这么多, 希望大家喜欢. 引号, 往往在bash中就是判断一个人水平的好考点. 因此希望大家能予以重视.

PowerShell脚本反引号用法实例:随时随地给代码换行 主要介绍了PowerShell脚本反引号用法实例:随时随地给代码换行,在遇到一些超长代码行时非常有用,一般编程代码一行的字符数不超过80个哦,需要的朋友可以参考下 立即下载

相关推荐

华为 S2600T 存储 3 种网络端口(H4/H5/串口)用途解析与故障恢复实战

本文深度解析华为S2600T存储设备的三种关键网络端口(H4/H5/串口)的功能用途与故障恢复方法。通过详细的配置指南和实战案例,帮助管理员掌握管理接口(H4)的日常运维、维护接口(H5)的高级应用以及串口的应急操作,提升存储设备的可靠性和维护效率。

weixin_30899023的博客 339

如何替换PowerShell中的"/"与"\"符号

placeholder

Anders's Blog 6123

保姆级教程:用OSSH免费版+FreeRADIUS+FreeAC NAC,从零搭建一套企业级无线Portal认证系统

本文提供了一套基于OSSH免费版、FreeRADIUS和FreeAC NAC的企业级无线Portal认证系统搭建教程。从环境规划、核心组件安装到认证策略与用户管理,详细介绍了如何利用开源工具构建高效、安全的认证体系,特别适用于预算有限但需求严格的企业场景。

weixin_27032989的博客 392

WindownsPowershell中的单引号和双引号

反引号不能在单引号对中表示转义。反引号不能直接表示转义。

kfepiza的博客 1332

VL53L0X测距不准?手把手教你做RefSPAD校准与环境补偿(附Arduino/STM32代码)

本文详细解析了VL53L0X激光测距传感器精度不足的原因,并提供了RefSPAD校准与环境补偿的完整解决方案。通过Arduino和STM32代码示例,手把手教你实现毫米级测距稳定性,适用于机器人避障、工业检测等场景。

weixin_28744423的博客 257

centos7下安装gcc-10.3.0

生成多个系统版本的代码,如果你的操作系统是32位,默认就已经设置为 disable,这时gcc仅能生成32位的可执行程序;这里只开启了c,c++ 和fortran,因为支持的语言越多,就需要安装越多的相应静态与动态库,还有五花八门的依赖库,这会让管理变得困难,体积也会变得庞大。启用posix标准的线程支持,这个设置取决于宿主或目标操作系统的类型,其它可用值有:aix,dec,solaris,win32等,如果你是其它的类UNIX系统,就需要设置相应的值。指定安装路径,这里没有指定,就直接放到文件夹里就好。

lxystar2003的博客 1189

powershell 特殊符号处理

两个双引号产生一个双引号,这里不包括最外层的双引号。

winterye12的博客 1565

三维荧光光谱(EEM)散射干扰实战:从识别到精准切除的完整流程

本文详细解析三维荧光光谱(EEM)中散射干扰的识别与精准切除流程,涵盖瑞利散射和拉曼散射的实战处理技巧。通过drEEM工具箱的应用示例和高级场景解决方案,帮助研究者有效消除散射干扰,提升数据准确性,特别适用于环境样品和生物活体样本分析。

weixin_42554042的博客 327

PowerShell 使用-Command 时参数内容包含引号问题

Powershell 使用-Command 时参数内容包含引号问题 背景描述 在使用VMWare的PowerCLI开发虚拟机管理程序,使用"虚拟机自定义规范"来实现虚拟机的定制。 虚拟机自定义规范的GuiRunOnce调用只支持命令执行模式,因此需将在PowerShell写好的代码转换为命令执行模式。 下列代码片段是修改Oracle监听主机名,使得虚拟机新建出来时,主机名变化不会影响其中Ora...

山水牧羊 1745

无网环境也能玩转DBeaver?手把手教你离线安装与ClickHouse连接(附实测jar包)

本文详细介绍了在无网环境下如何离线安装DBeaver并配置ClickHouse连接的完整指南。通过准备必备工具如DBeaver安装包、ClickHouse JDBC驱动及Maven本地仓库,确保在物理隔离环境中实现数据库管理。文章包含详细的安装步骤、驱动配置和性能优化建议,帮助开发者在严格网络限制下高效工作。

weixin_42635064的博客 376

HTOL集成电路老化测试学习总结-20250510

电子元器件的可靠性在产品开发中至关重要,尤其是在微电子技术迅速发展的今天。电子元器件的失效率通常遵循“浴盆曲线”,分为早期失效期、可使用期和老化期。为了评估芯片的可靠性,常采用高温操作寿命测试(HTOL),通过高温和高压加速芯片老化,以筛选出早期失效的芯片并评估其长期可靠性。HTOL测试中,芯片在高温下运行并监控其性能变化,通过阿伦尼乌斯公式计算加速因子,预测芯片的失效率和寿命。此外,Burn-in测试用于加速芯片老化,提前发现并剔除不合格产品,而早期失效率测试(ELFR)则用于评估产品初期使用阶段的可靠性

歌颂苦难的行为是无耻的; 2106

linux 脚本双引号转义,探索PowerShell(十五) 引号与转义字符

基础用法总结说来:单引号任何情况下都只表示引号内自身的字符。也就是说,单引号内的内容不会进行变量的代换与字符的转义。而在双引号中,则允许进行变量代换和字符转义。在对变量进行代换和字符进行转义的判断上,是由命令最外层的引号决定的。详细介绍,还是要用示例来说明。使用双引号输出:复制代码 代码如下:$a="World" "Hello, $a" 运行结果为:若使用单引号,将命令改为:复制代码 代码如下:$...

weixin_36213143的博客 1105

Agentic AI商业化落地指南:提示工程架构师的7步优化法

Agentic AI(具备自主感知、决策与行动能力的智能体系统)是未来AI商业化的核心方向,其价值在于将大模型的“认知能力”转化为“实际行动”,解决复杂商业场景中的自动化与个性化需求。而提示工程(Prompt Engineering)作为连接人类意图与智能体行为的“翻译器”,直接决定了智能体的可控性、效率与用户体验,是Agentic AI商业化落地的关键支撑。本文结合第一性原理与工程实践,提出提示工程架构师的“7步优化法”,覆盖从“商业目标定义”到“规模化推广”的全流程。通过理论框架推导架构设计拆解。

AI架构全栈开发实战笔记 1万+

PowerShell单引号与双引号深度解析:变量展开、转义与避坑指南

在编程语言中,字符串引号的选择直接影响数据解析与执行结果。PowerShell作为Windows生态的核心脚本语言,其单引号与双引号具有截然不同的语义:双引号支持变量展开与子表达式,单引号则保持内容字面原样。理解这一机制是避免路径拼接错误、命令注入漏洞和正则匹配失败的关键。无论是配置文件批量修改、动态命令构造,还是JSON文本处理,正确运用引号规则能显著提升脚本的健壮性与安全性。本文从基础原理出发,结合实战案例,系统梳理PowerShell引号的常见误区与最佳实践,帮助开发者快速定位并解决由引号引发的隐蔽故

weixin_34005090的博客 328

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

PowerShell引号全解析:单双引号的区别、转义与避坑

在PowerShell脚本开发中,单引号与双引号的差异往往是被忽视却频繁引发问题的核心点。双引号支持变量展开与$()子表达式,单引号则保留字符串字面意义,理解这一原理是正确使用字符串的基础,能够避免路径拼接错误、正则表达式失效以及“字符串缺少终止符”等常见报错。无论是动态生成文件路径、调用外部程序,还是编写开机自启脚本与正则匹配,合理选型引号都直接影响脚本的稳定性与可维护性。从工程实践角度,系统梳理两者的解析机制、转义规则、场景选型与踩坑记录,帮助读者彻底掌握PowerShell引号的使用技巧。

weixin_32306957的博客 344

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

PowerShell引号完全指南:单双引号、转义与变量展开

字符串处理是编程中最基础也最容易出错的一环,引号语法在不同语言中各具特色。PowerShell 中的单引号与双引号看似相似,却承担着完全不同的语义:双引号会触发变量展开与转义序列,单引号则保持字面原样输出。理解这些差异是避免脚本运行异常的关键。本文系统剖析 PowerShell 字符串的底层机制,涵盖变量插值边界、反引号转义、嵌套引号处理、$() 子表达式、-f 格式化运算符,以及调用外部命令时引号丢失的应对方案。通过参数数组、Stop-Parsing 与 here-string 等工具,可大幅提升复杂字符

weixin_34072296的博客 312

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

windows cmd中单引号和双引号的问题

这个问题的起因是在windows cmd中运行一个简单的命令发现没有输出,但是进入node环境后,直接执行是有输出的。于是在Linux上迅速做了验证,执行,成功输出了信息。这时意识到可能是和在windows cmd下含义是不同的,做了一个验证此时可以正常输出了。于是查阅了相关资料,对于和在windows cmd下区别,记录如下。

Turbo.AI,专注AI工程化 2237

PowerShell: 单引号字符串和双引号字符串的区别

当输入字符串表达式时,可以使用单引号('')或双引号("")括住字符串,但PowerShell解析单引号和双引号中字符串的方式是不同的。 一、单引号括住的字符串,字符串被精确地传递到命令,字符串中包含的任何表达式都不会被计算,只会被解释成文本。例如: $varA=200 Write-host 'The value of $varA is $varA.' 输出为: The ...

a2218641的博客 773

PowerShell的双引号

 作者: Edengundam(马涛)今天看病速度真快, 趁着空隙, 我就继续上次没有完成工作, 介绍双引号. 双引号用的地方太多了, 今天我依然会在Bash, Perl和PowerShell之间进行对比, 对比的三个方面没有变化: 变量展开(也被称为: 变量代换, 变量篡改. ), 转义字符, 引号自身.

Windows PowerShell 5341

Jenkins声明式Pipeline中三个单引号和三个双引号的区别

在Jenkins声明式Pipeline(Declaritive Pipeline)中,如果需要执行多个命令,可以在Jenkinsfile中,将它们用三个单引号或三个双引号来包围。

qq_34719392的博客 3771

PowerShell中单引号和双引号的区别

双引号内的PowerShell变量会先计算出值,然后输出。单引号内的PowerShell变量作为字符串直接输出。 看下面的一个示例: 变量赋值:$a=”hello world!”(1)使用双引号执行语句:write-host “i said $a” 由于后面的认成了变量,输出:i said hello world! (2)如果使用单引号,执行语句:write-host ‘i ...

weixin_33875564的博客 482

csv 单引号 数字,处理带单引号的字符串和带单引号的字符串中的偶数逗号或单引号的CSV文件...

I have a CSV file with text columns quoted in single quote around it and other non text columns don't have a quote around it.The text columns might have a comma or single quote within these single quo...

weixin_28876083的博客 250

PowerShell:雙引號與單引號

輸入:  "2+2 is (2+2)"結果:   2+2 is (2+2) 一般字串 輸入:  "2+2 is $(2+2)"結果:   2+2 is 4 雙引號中會將$開頭的作解析,括號內解析為4 輸入:  "2+2 is $2+2"結果:   2+2 is +2 雙引號中會將$開頭的作解析,$2無此變數因此不顯示,+2視為一般字串;若是事先定義$

Anders's Blog 1268

c语言读写csv文件有单引号,处理带有单引号字符串的CSV文件以及单引号字符串...

我有一个CSV文件,其中的文字列引用了单引号,其他非文本列没有引号。文本列可能在这些单引号文本列中有逗号或单引号。我在网上找到了一个脚本,但它并没有处理这种情况。有没有办法在PowerShell中处理这个?示例:123,678.89,'hello there1', 'xyz1@gmail.com', 'abc,nds'\n123,678.89,'hello 'there2', 'xyz2@gmai...

weixin_36076151的博客 486

PowerShell字符串

Powershell中提供了字符串格式化方法,其经典用法是调用[String]::Format函数,来将字符串中的花括号替代为某个变量。括在双引号中的字符串是可扩展字符串,可直接对美元符号后面的变量进行字符串转化;字符串就是字符组成的数组,在Powershell中,可通过单引号或双引号来定义字符串。split提供两种调用方式,既可通过内置方法的形式,也可以通过指令参数的形式。除了这两种字符串之外,还有一种通过@进行引用的字符串,可用于引用多行文本,示例如下。当作需要格式化的数值,而将后面的。

微小冷的学习笔记 2408
上一篇: 小议Test-Path参数IsVaild的使用限制
下一篇: PowerShell的双引号
PowerShell
博客等级 码龄19年 103粉丝 110原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值