使用 `` 命令替换

使用 `` 命令替换

这是摘录自bash手册

当使用旧式反引号形式的替换时,反斜杠保留其字面含义,除非后面跟着$`\

但反引号对待$and 的\$方式与以下命令的输出所建议的方式相同:

Command        Output
echo '$PWD'    $PWD
echo '\$PWD'   \$PWD

答案1

我也是 stackexchange 和 Linux 的新手。提前致谢。

欢迎双方光临!

您的示例中没有反引号,这些是单引号:''反引号看起来像这样:``

另外,我建议你简单地不要使用它们(就是反引号)!最好使用以下语法进行命令替换:$(<command>)

了解原因这里

快乐黑客!

答案2

我认为存在误解:bash 手册作者所说的文字值并不是我们作为普通用户可能理解的文字值。此外,还有两件事在起作用。首先,反引号用于命令替换,其次是“反斜杠的字面含义”。让我们从最后一个开始。

引用 bash 手册的 QUOTING 部分:

A  non-quoted backslash (\) is the escape character.
It preserves the literal value of the next character that
follows, with the exception of <newline>. 

什么是不是很明显,作者正在谈论实际的反斜杠,即文本。单反斜杠本身代表转义字符,但他们在您提供的链接中谈论的是双反斜杠。看看这个:

bash-4.3$ var=`echo \ `
bash-4.3$ echo $var

bash-4.3$ var=`echo \\ `
bash-4.3$ echo $var

bash-4.3$ var=`echo \\$ `
bash-4.3$ echo $var
$
bash-4.3$ var=`echo \\\ `
bash-4.3$ echo $var
\

很难理解这一点,但可以这样想:您必须首先转义转义字符。

相关内容