我想知道这两个命令有什么区别:
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]="`"
我把其他例子留给你自己去理解。