必须在bash中使用双引号或转义的特殊字符

时间:2013-12-24 08:53:51

标签: bash

我应该使用\,{/ p>等'个特殊字符来引用或转义

$ echo "'"
'
$ echo \'
'

这显然无关紧要,但有些情况除了$`` or之外,我知道存在差异。

谢谢,

Eric J.

1 个答案:

答案 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'."

可读性应该是关键。