反引号解释

反引号解释

我想知道这两个命令有什么区别:

echo ` echo `date` `

echo ` echo \`date\` `

我知道 \ 用于转义字符,但在这种特定的上下文中我无法理解它。为什么我们不使用

echo \` echo \`date\` \` 

相反,如果我们应该转义 ` 字符?

答案1

您可以使用其他$(cmd)可以嵌套的反引号表达式。另一方面,您可以生成反引号的内部参数到变量中并在内部使用它们

echo $(echo `date`)
echo $(echo $(date))

x=`date` echo `echo $x`

如果没有转义引号 \`,您将拥有

echo $(echo )date$( )

shell 将尝试解析参数,因此尝试计算表达式的参数,即:

echo \` echo \`date\` \` 
argv[0]="echo", argv[1]="`", argv[2]="echo", argv[3]="`date`", argv[4]="`"

我把其他例子留给你自己去理解。

相关内容