![我如何回应美元符号?](https://linux22.com/image/57675/%E6%88%91%E5%A6%82%E4%BD%95%E5%9B%9E%E5%BA%94%E7%BE%8E%E5%85%83%E7%AC%A6%E5%8F%B7%EF%BC%9F.png)
例如,$PATH
和$HOME
当我输入时,echo $PATH
它返回 my $PATH
,但我想回显该单词$PATH
,而不是实际变量代表的内容,echo "$PATH"
也不起作用。
答案1
你只需要逃避美元$
:
echo \$PATH
$PATH
或者用单引号括起来:
echo '$PATH'
$PATH
这将确保 shell 不会解释该单词。
答案2
$
在大多数 shell 的语法中是一个非常特殊的字符。如果我们只看类似 Bourne 的 shell,它用于介绍:
- 参数扩展如
$#
,$var
,${foo:-bar}
- 命令替换如下
$(logname)
(也在${ logname;}
某些 shell 中以避免子 shell) - 算术扩展如
$((1+1))
(也在$[1+1]
某些 shell 中)。 - 某些 shell 中的其他形式的引用,例如
$'\n'
or$"localized string"
。
除了最后一种情况外,这些扩展/替换仍然发生在双引号内(以及$"..."
in bash
or内ksh93
)
为了防止它$
受到特殊对待,您需要用以下任一方式引用它:
- 单引号:
echo '$PATH'
或echo '$'PATH
.您通常想要使用的字符,因为它会转义大多数 shell 中的所有字符(除了它本身)。 - 黑斜杠:
echo \$PATH
.也在双引号内:echo "\$PATH"
- 在某些 shell 中,还有其他一些引用运算符:
echo $'$PATH'
,echo $'\44PATH'
(假设 ASCII 兼容的字符集),echo $'\u0024'
或者确保它不是上面列出的有效扩展形式的一部分:
echo "$"PATH
.应该避免这些,因为有些 shell 喜欢echo $""PATH
,echo $"PATH"
ksh93
并bash
支持$"..."
引号的形式。echo $``PATH
。除了表明这是可能的之外,您没有任何理由想要使用它。echo "${$+$}PATH"
以及其他复杂的...
或者你可以用$
另一种方式输出:
- 与 Unix 兼容
echo
:(echo '\044PATH'
其他一些echo
需要echo -e '\044PATH'
) printf '\44PATH\n'
猫 << \EOF $路径 EOF
请注意这些反斜杠需要如何引用,因为它们显然对于 shell 来说也是特殊的。
希望现在应该清楚,尽管有很多方法可以做到这一点,但没有充分的理由您想使用除echo '$PATH'
这里之外的其他方法。
答案3
请注意,双引号内的文字 $ 可能会出现问题。可以通过在双引号外生成 $ 来完成,如下所示:
echo "My terminal is $term, first file found in /dev is </dev/`ls /dev | head -n 1`>, the
dollar symbol is '"`echo '$'`"', and a newspaper costs "`echo '$'`"2.50."
or like this:
echo "$term is the value of "'$term'
输出:
My terminal is xterm, first file found in /dev is </dev/acpi>, the dollar symbol
is '$', and a newspaper costs $2.50.
xterm is the value of $term
答案4
使用:
echo ''\$PATH'' >> output.txt
这会起作用。