首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符\$ in echo

字符\$ in echo
EN

Stack Overflow用户
提问于 2017-11-29 09:21:06
回答 2查看 156关注 0票数 0

我需要一个字符串的文本“\$条件”。我试过用:

代码语言:javascript
复制
> echo "\$CONDITIONS"
$CONDITIONS
> echo "\\$CONDITIONS"
\

你能帮我一下吗?在echo命令中输入什么才能获得

代码语言:javascript
复制
\$CONDITIONS

结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-29 09:27:19

使用\\\来实现这一点。

代码语言:javascript
复制
#!/bin/bash
echo "\\\$CONDITION" # prints \$CONDITION
票数 0
EN

Stack Overflow用户

发布于 2017-11-29 09:57:49

除了打印传入的字符串外,echo什么也不做。诀窍是对shell有足够的了解,以便能够传递您想要的字符串。

如果不需要shell对值执行替换,只需使用单引号即可。

代码语言:javascript
复制
echo '\$CONDITIONS'

如果您绝对需要使用双引号,则仍然可以单独引用字符串的各个部分。在shell传递单引号之前,双引号旁边的单引号将被粘贴到一个字符串中。

代码语言:javascript
复制
echo '\$'"CONDITIONS"

好的老echo有点累;您可能还想考虑一下printf,它有点多功能。

代码语言:javascript
复制
printf "\x5c\x24CONDITIONS\n"

(我通常在这里也使用单引号;双引号只是为了证明即使是双引号也是这样。)但是,请注意反斜杠;即使是单个反斜杠,这些反斜杠也是有效的,但如果要在双引号中使用文字反斜杠,则通常需要加倍。)

回顾一下你失败的尝试中发生了什么,

代码语言:javascript
复制
echo "\$CONDITIONS"  # produces $CONDITIONS

反斜杠正确地从外壳中脱出美元符号,并作为过程的一部分被移除。所以你是说,一个文字的美元符号,和文本CONDITIONS

代码语言:javascript
复制
echo "\\$CONDITIONS"  # produces \

在这里,反斜杠类似地转义反斜杠,外壳扩展变量$CONDITIONS,该变量未设置或为空。

代码语言:javascript
复制
echo "\\\$CONDITIONS"

好吧,这很管用,但很难看。有一个反斜杠-转义反斜杠,一个反斜杠-转义美元符号,以及文本CONDITIONS

反斜杠和美元符号(以及倒带符号`)不会在单引号中进行处理,因此,如果字符串包含其中任何一个(更普遍地说,如果不具体要求shell处理这些结构),则应该这样做。

反斜杠在双引号中有些棘手。shell将删除它处理的文件(因此\$只被转换为$),但是保留它实际上没有处理的内容(因此\x保留为双引号中的\x )。没有引号,行为就又不同了。(甚至没有进入狂犬病手术。只需使用引号。)

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

https://stackoverflow.com/questions/47549118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档