Shell中反引号和$()的区别

时间:2022-07-16 21:46:17
Shell中可以用来实现变量代换的命令有两种,一种是由反引号括起来的一条命令另一种是由$()括起来一条命令,shell先执行这条命令,然后见输出结果立刻代换到当前命令行中。

  例如定义一个变量存放date命令的输出:

    $DATE=`data`

    $echo $DATE

  命令代换也可以用$()表示:$DATE=$(date)  输出的效果是一样的。我们知道系统是不会存在冗余的的命令,那么这两种方式有什么区别呢?下面我们再看一个例子:

    i=1

    time1=Fri Aug 23 11:35:21

    a=$(echo \time1)

  经运行,命令的输出结果是$time1

  那么换成a=`echo \time1`输出结果还是一样的吗?输出结果如下:

    Fri Aug 23 11:35:21

  这种结果的原因如下:

    1.反引号本身就对\进行了转移,保留了其本身的意思,如果我们想在反引号中起到\的特殊意义的话,我们必须用两个反斜杠来进行表示。

    2.$()中不需要考虑\的问题,与我们平常使用的\一样

  反引号是老的用法,$()是新的用法,不管在学习测试中还是在实际工作中,$()的用法都是被推荐的。