PowerShell的双引号

Powershell语法 PowerShell 中有很多类型,包括但不限于以下类型: [类型]可省略。 阅读详情

 作者: Edengundam(马涛)

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

 
变量代换
转义字符支持程度
双引号自身引用
Bash
允许
允许
注1
Perl
允许
允许
注2
PowerShell
允许
允许
注3

注1: Bash中, 只能使用转义序列来引用双引号, 这里不包括使用反引号或$()两种捕获程序输出的情况.

注2: Perl的双引号中, 转义序列发挥了完全的功能, 具体细节可以参考perldoc或learning perl.

注3: PowerShell中, 可以使用转义序列和连续出现的两个双引号当作一个双引号. 请见例子.

双引号, 是非常有用的工具, 由于支持了变量代换和转义字符的支持(其实PowerShell和Bash还支持另外一种功能, 类似于子表达式求值, 我将单独为大家介绍.). 使得您在组合变量和字符串的连接, 输出格式控制上有了更多的能力.

在看例子之前, 我先介绍我使用引号的习惯, 既然是习惯, 因人而异, 没有对错. 但是, 我相信好的习惯, 是能够避免一些潜在的错误的.

1. 无论使用Bash, Perl, PowerShell, 只要不使用变量代换和转义字符, 只使用单引号;

2. 使用正则表达式时, 表达式如果不复杂, 只使用单引号;

3. 需要控制换行等格式时, 优先使用现有的cmdlet(Bash中使用echo, echo -n等), 尽量少的使用转义字符;

4. 如果需要变量代换等, 尽量使用字符串连接运算符, 并且按照1-3, 尽量避免双引号;

5. 需要嵌入子表达式, 输出类似TAB制表符等字符时, 使用双引号.

我的规则很简单, 因为双引号支持变量展开和转义序列, 这使得字符串的字面值和实际输出是完全不同的. 往往这样的变化对于脚本编写者会造成很多不必要的麻烦, 最大程度的阻止你的脚本进行这两种操作, 将这两种操作放到明面上, 都会降低脚本的错误可能. 以上只是本人的习惯, 在PowerShell中只要使用"+"就可以连接字符串了, 而Bash更简单, 直接连着写就行, 例如echo "This "'is '" A"' Test!'. 好了, 我们现在来看看PowerShell的几个例子吧:

PS C:> $dt = Get-Date
PS C
:> $num = 8250
PS C
:> "试试双引号的变量代换, 变量$num"
试试双引号的变量代换
, 变量8250
PS C
:> "使用转义序列来阻止变量代换, 变量`$num中的值$num"
使用转义序列来阻止变量代换
, 变量$num中的值8250
PS C
:> "看看`t`t制表符TAB啥样子."
看看            制表符TAB啥样子
.
PS C
:> "看看换行吧...`n"
看看换行吧
...


PS C
:> "连续使用两个双引号看看""看到效果了嘛?"
连续使用两个双引号看看
"看到效果了嘛?
PS C:> 
"双引号中使用单引号呢?不需要转义的哦>>'<<"
双引号中使用单引号呢?不需要转义的哦>>
'<<
PS C
:> "今天的日期是$dt"
今天的日期是09
/27/2007 10:46:47

好了, 聪明的大家已经对单引号, 双引号的基本点有了认识, 下一次, 我们再来做真正的纵向对比. 在Bash, Perl, PowerShell中单引号, 双引号进行对比.

此外, 还会为大家介绍Here-String, 这个东西和Bash中的Here-Document类似. 其实你可以把他们当作特殊的转义序列来看待. 下次见^_^

PowerShell下Maven安装JAR包必看:双引号引发的‘No POM‘错误全解析 本文深入解析了在PowerShell中使用Maven安装JAR包时,因参数解析差异导致的'No POM'错误。核心问题在于PowerShell对`mvn install:install-file`命令中`-D`参数的智能解析,与Maven预期不符。文章提供了三种解决方案:全参数引号包裹、使用`--%`停止解析符以及降级至CMD执行,并推荐将全参数引号包裹作为标准实践,以确保参数正确传递,避免错误。 阅读详情

相关推荐

PowerShell下Maven安装JAR包必看:双引号引发的‘血案‘与完美解决方案

本文深入解析了在PowerShell下使用Maven安装JAR包时常见的双引号问题,提供了详细的解决方案和跨终端命令对比。通过实例演示如何正确处理`mvn install:install-file`命令参数,避免因PowerShell特殊解析规则导致的错误,帮助Java开发者高效管理本地Maven仓库依赖。

weixin_30955617的博客 425

powershell 特殊符号处理

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

winterye12的博客 1553

PowerShell专栏】PowerShell中的单引号双引号

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

技术与管理的平衡木- 172

WindownsPowershell中的单引号双引号

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

kfepiza的博客 1307

关于在 PowerShell 中使用双引号的问题

PowerShell v3 的新语法“--%”

m0_46219825的博客 440

13. Powershell -- 引号和转义字符

Powershell 引号和转义字符引号:任何情况下都只表示引号内自身的字符。输出:$a="World"<enter>‘Hello,$a’结果: Hello,$a双引号:允许进行变量代换和字符转义。输出:$a="World"<enter>"Hello,$a"结果:Hello,World输出单引号,双引号‘I ‘’m $a ’结果: I’m...

weixin_34366546的博客 749

shell 去掉逗号_Powershell脚本从CSV中删除双引号,除非双引号内存在逗号

I have a .csv in the following file format:In: "bob","1234 Main St, New York, NY","cool guy"I am looking to remove double quotes that don't have a comma inside:Out: bob,"1234 Main St, New York, Ny",co...

weixin_39555415的博客 351

PowerShell中单引号双引号的区别

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

weixin_33875564的博客 482

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

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

a2218641的博客 771

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

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

weixin_36213143的博客 1100

Powershell编程---双引号作为一个字符

Powershell编程

Andy的博客 274

终极指南:ExifToolGui中PowerShell双引号转义的完美解决方案

ExifToolGui是一款强大的ExifTool图形界面工具,让用户能够轻松编辑和管理图片元数据。然而在使用PowerShell脚本时,双引号转义问题常常让新手用户头疼不已。本文将为你提供一套完整的解决方案,帮助你彻底攻克这一技术难题。 ## 为什么PowerShell双引号转义如此重要? 在ExifToolGui中使用PowerShell脚本时,双引号的正确处理直接影响命令执行的成败。错误

gitblog_07803的博客 435

PowerShell下Maven安装JAR包报错?双引号才是关键!

本文详细解析了在PowerShell中使用Maven安装JAR包时常见的报错问题,揭示了双引号在参数传递中的关键作用。通过对比PowerShell与CMD的参数处理机制,提供了双引号解决方案及多种替代方案,帮助开发者高效解决`mvn install:install-file`命令执行问题,提升Java开发效率。

weixin_28829479的博客 163

shell 去掉逗号,Powershell脚本从CSV中删除双引号,除非双引号内存在逗号

I have a .csv in the following file format:In: "bob","1234 Main St, New York, NY","cool guy"I am looking to remove double quotes that don't have a comma inside:Out: bob,"1234 Main St, New York, Ny",co...

weixin_42100032的博客 541

Powershell双引号字符串的区别

最近做一些脚本自动化的事情,发现一个很有意思的东西,如下,如果用户账户包含了$符号,就会抛出一个“User cannot be found”的异常。 New-SPSite $CommunityUrl -OwnerAlias "ASIAPACIFIC`\$ExSquareDEV001" -Name "$CommunityName" -Template "STS#0" -ContentDatabas...

weixin_30781433的博客 225

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 1266

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

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

Turbo.AI,专注AI工程化 2178
上一篇: PowerShell的单引号和反引号
下一篇: Resolve-Path 帮助信息
PowerShell
博客等级 码龄19年 103粉丝 110原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值