我需要一个字符串的文本“\$条件”。我试过用:
> echo "\$CONDITIONS"
$CONDITIONS
> echo "\\$CONDITIONS"
\你能帮我一下吗?在echo命令中输入什么才能获得
\$CONDITIONS结果?
发布于 2017-11-29 09:27:19
使用\\\来实现这一点。
#!/bin/bash
echo "\\\$CONDITION" # prints \$CONDITION发布于 2017-11-29 09:57:49
除了打印传入的字符串外,echo什么也不做。诀窍是对shell有足够的了解,以便能够传递您想要的字符串。
如果不需要shell对值执行替换,只需使用单引号即可。
echo '\$CONDITIONS'如果您绝对需要使用双引号,则仍然可以单独引用字符串的各个部分。在shell传递单引号之前,双引号旁边的单引号将被粘贴到一个字符串中。
echo '\$'"CONDITIONS"好的老echo有点累;您可能还想考虑一下printf,它有点多功能。
printf "\x5c\x24CONDITIONS\n"(我通常在这里也使用单引号;双引号只是为了证明即使是双引号也是这样。)但是,请注意反斜杠;即使是单个反斜杠,这些反斜杠也是有效的,但如果要在双引号中使用文字反斜杠,则通常需要加倍。)
回顾一下你失败的尝试中发生了什么,
echo "\$CONDITIONS" # produces $CONDITIONS反斜杠正确地从外壳中脱出美元符号,并作为过程的一部分被移除。所以你是说,一个文字的美元符号,和文本CONDITIONS。
echo "\\$CONDITIONS" # produces \在这里,反斜杠类似地转义反斜杠,外壳扩展变量$CONDITIONS,该变量未设置或为空。
echo "\\\$CONDITIONS"好吧,这很管用,但很难看。有一个反斜杠-转义反斜杠,一个反斜杠-转义美元符号,以及文本CONDITIONS。
反斜杠和美元符号(以及倒带符号`)不会在单引号中进行处理,因此,如果字符串包含其中任何一个(更普遍地说,如果不具体要求shell处理这些结构),则应该这样做。
反斜杠在双引号中有些棘手。shell将删除它处理的文件(因此\$只被转换为$),但是保留它实际上没有处理的内容(因此\x保留为双引号中的\x )。没有引号,行为就又不同了。(甚至没有进入狂犬病手术。只需使用引号。)
https://stackoverflow.com/questions/47549118
复制相似问题