我应该使用\
,{/ p>等'
个特殊字符来引用或转义
$ echo "'"
'
$ echo \'
'
这显然无关紧要,但有些情况除了$
,`` or
之外,我知道存在差异。
谢谢,
Eric J.
答案 0 :(得分:1)
您可以使用反斜杠,单引号或(有时)双引号。
单引号禁止替换环境变量和所有特殊字符扩展。但是,单引号字符不能在单引号内 - 即使前面有反斜杠。您可以加双引号:
$ echo -e 'The variable is called "$FOO".'
The variable is called "$FOO".
双引号隐藏了shell(*
和?
)中的glob扩展字符,但它会插入shell变量。如果您使用echo -e
或设置shopt -s xpg_echo
,则双引号将允许插入反斜杠转义的字符序列,例如\a
和\t
。要逃避这些,你必须反斜杠 - 逃避反斜杠:
$ echo -e "The \\t character sequence represents a tab character."
The \t character sequence represents a tab character."
反斜杠字符将阻止特殊字符的扩展,包括双引号和$
符号:
$ echo -e "The variable is called \"\$FOO\"."
The variable is called "$FOO".
那么,选择哪一个?哪个人看起来最好。例如,在前面的echo
命令中,我最好使用单引号,这样我就不会有一个接一个的混乱的反斜杠数组。
另一方面:
$ echo -e "The value of \$FOO is '$FOO'."
The value of FOO is 'bar'.
可能比尝试这样的事情更好:
$ echo -e 'The value of $FOO is '"'$FOO'."
可读性应该是关键。