两者直接的区别, 推荐使用$()
代替反引号
两者都可以调用系统命令,
1. 单独调用
两者结果完全一样。
[root@izwz91rruliuj88pj4zsw0z ~]# echo `pwd`
/root
[root@izwz91rruliuj88pj4zsw0z ~]# echo $(pwd)
/root
2. 嵌套调用
$()
结果正确, 反引号结果不正确
当前目录:
root@iZhtbq9i9lb77uZ:/home/dengfei/R# pwd
/home/dengfei/R
$()
镶嵌结果正确
root@iZhtbq9i9lb77uZ:/home/dengfei/R# echo $(basename $(pwd))
R
反引号镶嵌,结果报错
root@iZhtbq9i9lb77uZ:/home/dengfei/R# echo `basename `pwd``
basename: missing operand
Try 'basename --help' for more information.
pwd
3. 混合镶嵌
两者都正确
root@iZhtbq9i9lb77uZ:/home/dengfei/R# echo $(basename `pwd`)
R
root@iZhtbq9i9lb77uZ:/home/dengfei/R# echo `basename $(pwd)`
R
结论
shell编程中, 要用$()
取代反引号调用系统命令, 以避免不可预知的错误.