首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么设置内容中的反勾不创建多行?

为什么设置内容中的反勾不创建多行?
EN

Stack Overflow用户
提问于 2022-10-26 08:24:09
回答 1查看 40关注 0票数 2

这两个命令都不会创建多行文本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Set-Content .\test.md 'Hello`r`nWorld'
Set-Content .\test.md 'Hello\r\nWorld'

只有这个才能

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Set-Content .\test.md @("Hello`nWorld")

你知道这是为什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-26 08:29:19

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- By contrast, `'...'` strings are [_verbatim_ strings](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Quoting_Rules#single-quoted-strings) that do _not_ interpret their contents - even ``` instances are used as verbatim (literally).
  • ` (所谓的回勾符)在PowerShell中充当转义字符,而不是 \.。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- That is, in _both_ `"..."` and `'...'` strings a `\` is a literal.
- (However, `\` _is_ the escape character in the context of [regexes (regular expressions)](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Regular_Expressions), but it is then the _.NET regex engine_ that interprets them, not PowerShell; e.g., 

"`r" -match '\r'$true:(内插的)文本CR字符。匹配它的转义正则表达式)。

至于,你尝试过

  • 实际上,上一个命令中的"Hello`nWorld"是一个使其工作的"..."字符串。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- By contrast, enclosing the string in `@(...)`, the [array-subexpression operator](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Operators#array-subexpression-operator--), is _incidental_ to the solution. ([`Set-Content`](https://learn.microsoft.com/powershell/module/microsoft.powershell.management/set-content)'s (positionally implied) `-Value` parameter is _array_-valued anyway (`System.Object[]`), so even a _single_ string getting passed is coerced to an array).
  • 最后,请注意,在默认情况下,Set-Content向输出文件添加了一个尾随的平台本机换行符;使用-NoNewLine来抑制它,但请注意,这样做也不会在多个输入对象的(字符串表示)之间放置换行符,如果适用的话(在您的情况下只有一个)。

因此(注意-NoNewLine和尾随`n):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Set-Content -NoNewLine .\test.md "Hello`nWorld`n"

可选阅读:PowerShell行为的设计原理:

为什么PowerShell不像其他语言一样使用反斜杠作为转义字符

由于\必须(也)在上(最初为Windows-)起作用,使用作为转义字符--从(POSIX兼容的)外壳中可知,Bash - is not 是一个选项E 271,因为\ E 175用作E 177路径分隔符E 278E 179Windows上的E 280。

如果\是转义字符,则必须使用Get-ChildItem C:\\Windows\\System32而不是Get-ChildItem C:\Windows\System32,这在shell中显然是不切实际的,因为在shell中处理文件系统路径是非常常见的。

因此,`**,必须选择a 不同的字符,这实际上是所谓的_回勾**:至少在美国的键盘上,打字很容易(就像\一样),而且它的好处是很少(作为自身)出现在现实世界的字符串中,因此很少需要输入。

请注意,Windows上的旧版本shell cmd.exe也必须选择一个不同的字符:它选择了^,即所谓的插入符。

为什么它不像其他语言一样使用单引号和双引号?

不同的语言做出了不同的设计选择,但在使"..."字符串内插,但'...'字符串没有,遵循现有的语言在,即与POSIX兼容的shell,如Bash。作为对后者的改进,PowerShell还支持将逐字'嵌入到'...'中,转义为'' (例如,'6'' tall')。

考虑到PowerShell对向后兼容性的承诺,这种行为不会改变,特别是考虑到它对语言是多么的基础。

从概念上讲,您可以认为引用字符串所使用的方面应该与它是否是内插分开,这样您就可以为了语法的方便而自由地选择一种或另一种引用风格,同时单独控制是否应该进行内插。

因此,假设PowerShell可以使用单独的sigil来进行字符串内插,比如$"..."和$'...' (类似于C#现在提供的内容,尽管它显然只有一个字符串引用样式)。(顺便说一句: Bash和Ksh确实有这种语法形式,但它具有不同的用途(字符串的本地化),很少用于实践)。

然而,在实践中,一旦您了解了"..."和'...'如何在PowerShell中工作,就不难使它们按预期工作。

有关基本特性,请参见这个答案中PowerShell、 和POSIX兼容的shell*并置。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74211150

复制
相关文章
iOS开发之手势识别
  感觉有必要把iOS开发中的手势识别做一个小小的总结。在上一篇iOS开发之自定义表情键盘(组件封装与自动布局)博客中用到了一个轻击手势,就是在轻击TextView时从表情键盘回到系统键盘,在TextView中的手是用storyboard添加的。下面会先给出如何用storyboard给相应的控件添加手势,然后在用纯代码的方式给我们的控件添加手势,手势的用法比较简单。和button的用法类似,也是目标动作回调,话不多说,切入今天的正题。总共有六种手势识别:轻击手势(TapGestureRecognizer),
lizelu
2018/01/11
2.7K0
iOS开发之手势识别
OpenGLES-05 立方体3D变换
开始这篇文章之前,请先了解3D变换的相关知识,下面资料写得很好,请确保已经阅读过有关资料。 1.http://www.cnblogs.com/kesalin/archive/2012/12/06/3D_math.html 2.http://learnopengl-cn.readthedocs.io/zh/latest/01%20Getting%20started/07%20Transformations/ (1.2为3D变换知识)另外推荐下面资料,关于坐标系统的,我觉得最好理解坐标系统的资料,请都阅读
清墨
2018/05/07
1.1K0
OpenGLES-05 立方体3D变换
当不使用会话状态时禁用它
并不是所有的应用程序或页都需要针对于具体用户的会话状态,您应该对任何不需要会话状态的应用程序或页禁用会话状态。
Java架构师必看
2021/03/22
5100
VC 6 编译时一直处于Linking…状态,无响应
我安装上VC后,一编译程序,要么一直处于编译状态,要么处于linking…状态,VC就像死了一样。
全栈程序员站长
2022/07/04
7940
接口需要 SDK 处于 ready 状态后才能调用(附解决办法)
let promise = tim.login({userID: 'your userID', userSig: 'your userSig'});
用户1419762
2020/04/07
14.1K9
接口需要 SDK 处于 ready 状态后才能调用(附解决办法)
删除处于Terminating状态的namespace
可以看到monitoring这个namespace一直处于Terminating状态,一般情况下强删是删不掉的,强删的方法如下:
dogfei
2020/08/19
1.1K0
活动状态检查
通过查询基本视图,确认数据库和实例处于正常运行状态,可以对外提供数据服务。1.1实例状态1.1实例状态SELECT instance_name,status FROM gv$instance;查询返回实例名称、状态,正常状态应为Open。$crsctl status resource –t集群状态select name,open_mode from v$PDBS;PDB状态GDSCTL> config shardSharding状态1.2会话信息1.2会话信息SELECTSESSIONS_CURRENT,
用户8006012
2022/06/23
1.5K0
TienChin 活动管理-活动状态完善
编写一个将超过当前时间的活动状态设置为禁用,在列表查询的时候进行更改一下调用一下方法。
程序员 NEO
2023/10/12
1680
TienChin 活动管理-活动状态完善
Mac关机时处于黑屏状态
PS:不知道大家有没有遇到过mac电脑关机就黑屏,只有一个箭头,还可以滑动箭头,但就是黑屏状态,等个好长时间还是关不了机,因此我查了好多资料,原因是在关机时,mac要先关掉其他软件或者保存进程以备下次开机的时候接着用,我觉得我也没什么装的呀,是什么让它长时间关不了机呢,原来是MySql,我的MySql一直是处于start状态,我把这个关掉以后,再关机就是秒关了,开机后MySql也是自启的,没有其他坏的影响,只要每次关机的时候把这种后台服务的软件关掉就好了,Mac一般也不常关机,每次手动关掉也不费事。小伙伴们
cMusketeer
2018/03/28
1.8K0
Mac关机时处于黑屏状态
二极管处于截止状态时电压为多少_放大电路饱和失真
大家好,又见面了,我是你们的朋友全栈君。 1.截止状态所谓截止,就是三极管在工作时,集电极电流始终为0。此时,集电极与发射极间电压接近电源电压。对于NPN 型硅三极管来说,当U be在0~0.5V 之间时,I b很小,无论I b怎样变化,I c都为0。此时,三极管的内阻(Rce)很大,三极管截止。当在维修过程中,测得U be低于0.5V 或Uce接近电源电压时,就可知道三极管处在截止状态。 当 U be在0.5~0.7V 之间时,U be的微小变化就能引起I b的较大变化,I b随U be基本呈线性变化,从而引起I c的较大变化(I c=βI b)。这时三极管处于放大状态,集电极与发射极间电阻(Rce)随U be可变。当在维修过程中,测得U be在0.5~0.7V 之间时,就可知道三极管处在放大状态。 3.饱和状态
全栈程序员站长
2022/09/30
7530
该硬盘处于脱机状态解决方案
最近在一台电脑上使用U盘时发现连接后不会出现盘符,但设备管理器却能够显示大容量存储设备。起初以为是系统没有分配盘符,进入到磁盘管理发现磁盘处于脱机状态,并且显示:该磁盘处于脱机状态,因为它与另一个联机磁盘发生签名冲突。经过一番研究找到了解决方案,在此记录备查,也希望能够帮到其他人。
reizhi
2022/09/26
4.6K0
该硬盘处于脱机状态解决方案
Windows中磁盘处于脱机状态怎么解决
超融合中的windows虚拟机在新增硬盘之后,查看计算机本地,没有发现磁盘,此时只需要打开控制面板\所有控制面板项\管理工具中的计算机管理,之后再打开存储中的磁盘管理即可看到添加的磁盘。硬盘激活上线
小狐狸说事
2022/11/17
2K0
Windows中磁盘处于脱机状态怎么解决
juc04-验证线程处于临时状态
当一个线程被启动时,并不代表线程就有了执行权。 线程处于临就绪状态并没有执行权,这个时候 main 线程继续往下执行,有可能是别的线程先开始执行。
潇洒
2023/10/20
880
IL3002:当发布为单个文件时,避免调用
将应用发布为单个文件(例如将项目中的 PublishSingleFile 属性设置为 true)时,调用使用 RequiresAssemblyFilesAttribute 属性注释的成员与单文件不兼容。 这些调用可能不兼容,因为使用此属性注释的成员要求程序集文件位于磁盘上,而嵌入单文件应用的程序集已加载到内存中。
呆呆
2022/02/26
4580
Python调用Ant构建时根据构建状态来决定命令行退出状态
使用os.system()调用Ant构建时,不论构建成功还是失败(BUILD SUCCESSFUL/BUILD FAILED),命令行的总是正常退出 要解决问题: 首先想到的是获取ant命令的返回值,根据返回值来决定命令行的退出状态(0或非0,0代表正常退出) 查阅相关资料,得知python调用系统命令的函数有:os.system、os.popen、commands.getstatusoutput/getstatus/getoutput、subprocess.Popen等。
donghui
2019/04/19
1.1K0
【提问帖】GO中调用redis时,当并发量比较大时出现的问题。
GO中调用redis时,实始化一个连接池,做法也是一般的用户: &redis.Pool{ MaxIdle: beego.AppConfig.DefaultInt("redis::maxidle", 1), MaxActive: beego.AppConfig.DefaultInt("redis::maxactive", 10), IdleTimeout: time.Duration(beego.AppConfig.DefaultInt64("redis::idle_tim
李海彬
2018/03/27
2.2K0
【kubernetes系列】master节点部署Pod处于Pending状态
产生问题的原因是master节点部署Pod,导致无法启动; 问题描述: Warning FailedScheduling 40s (x28 over 28m) default-scheduler 0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn’t tolerate.
沁溪源
2022/05/06
3.6K1
【kubernetes系列】master节点部署Pod处于Pending状态
android onresume时view,android – 当对话框出现时不调用OnResume[通俗易懂]
An activity can frequently transition in and out of the
全栈程序员站长
2022/08/31
6690
点击加载更多

相似问题

如何将对象列表转换为简单列表,从对象列表中选择单个属性?

11

如何将对象中的属性列表转换为对象列表

10

将对象列表转换为单个列表

25

将对象列表转换为对象属性列表

21

如何将jq返回的JSON数组转换为具有该列表数据的单个属性的对象?

16
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文