Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash echo中的字符\$_Bash - Fatal编程技术网

Bash echo中的字符\$

Bash echo中的字符\$,bash,Bash,我需要在字符串中包含文本“\$CONDITIONS”。我试过用: > echo "\$CONDITIONS" $CONDITIONS > echo "\\$CONDITIONS" \ 你能帮我吗?我应该在echo命令中输入什么来获取 \$CONDITIONS 因此?使用\\\来实现这一点 #!/bin/bash echo "\\\$CONDITION" # prints \$CONDITION echo除了准确打印传入的字符串外,什么都不做。诀窍是对shell有足够的了解,以便

我需要在字符串中包含文本“\$CONDITIONS”。我试过用:

> echo "\$CONDITIONS"
$CONDITIONS
> echo "\\$CONDITIONS"
\
你能帮我吗?我应该在echo命令中输入什么来获取

\$CONDITIONS

因此?

使用
\\\
来实现这一点

#!/bin/bash
echo "\\\$CONDITION" # prints \$CONDITION

echo
除了准确打印传入的字符串外,什么都不做。诀窍是对shell有足够的了解,以便能够传入所需的字符串

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

echo '\$CONDITIONS'
如果您确实需要使用双引号,您仍然可以对字符串的各个部分使用单引号。与双引号相邻的单引号将被粘贴到一个字符串中,然后shell将其传递

echo '\$'"CONDITIONS"
好老
echo
有点累;您可能还需要考虑<代码> Prtff,这有点多用途。

printf "\x5c\x24CONDITIONS\n"
(我通常也会在这里使用单引号;双引号只是为了证明即使使用双引号也能起作用。但要小心反斜杠;即使使用单反斜杠,这些也会起作用,但如果希望在双引号内使用文字反斜杠,则通常需要将它们加倍。)

要查看失败尝试中发生的情况

echo "\$CONDITIONS"  # produces $CONDITIONS
反斜杠正确地从shell中转义美元符号,并作为过程的一部分被删除。你是说,一个字面上的美元符号和文本
CONDITIONS

echo "\\$CONDITIONS"  # produces \
这里,反斜杠类似地转义反斜杠,shell展开未设置或为空的变量
$CONDITIONS

echo "\\\$CONDITIONS"
好吧,这很管用,但很难看。有一个反斜杠转义反斜杠、一个反斜杠转义美元符号,以及文本
条件

echo "\\$CONDITIONS"  # produces \
反斜杠和美元符号(以及反斜杠
`
)不会在单引号内处理,因此,如果字符串包含这些符号中的任何一个,则通常应该使用反斜杠和美元符号(更一般地说,如果您不特别需要shell来处理这些结构,则应该使用反斜杠和美元符号)


反斜杠在双引号中有点棘手。shell将删除它所处理的代码(因此
\$
将转换为
$
),但保留它实际上不处理的代码(因此
\x
保留为双引号内的
\x
)。如果没有引号,行为也会有所不同。(甚至不用进那个兔子洞。只用引号。)

echo“\\\$CONDITIONS”对我有用。。。不适合您?
echo'\$CONDITIONS'
?更具体地说:要打印前导的
\
请使用
\\
,要打印可变部分
$CONDITION
请使用
\$CONDITION