shell反引号`与$()的区别

原文链接:https://www.jianshu.com/p/3129f22d3d94

反引号`` 与 $() 都是命令替换

举例1:
root@localhost software]# cat 3.sh 
#!/bin/bash
echo `echo $HOSTNAME`
echo $(echo $HOSTNAME)
[root@localhost software]# sh 3.sh
localhost.localdomain
localhost.localdomain
区别:
反引号中:若要使用转义字符需要两个反斜杠\\
$()中:   若要使用转义字符只需用单反斜杠\

举例2:
[root@localhost software]# cat 3.sh 
#!/bin/bash
echo `echo \$HOSTNAME`    反引号使用单反斜杠,$没有被转义成普通字符,所以还是执行了命令
echo $(echo \$HOSTNAME)   这里使用单反斜杠,$被转义成普通字符,所以被当成普通字符串
[root@localhost software]# sh 3.sh
localhost.localdomain
$HOSTNAME

举例3:
[root@localhost software]# cat 3.sh 
#!/bin/bash
echo `echo \\$HOSTNAME`
echo $(echo \$HOSTNAME)
[root@localhost software]# sh 3.sh
$HOSTNAME
$HOSTNAME
总结:反引号与$()都是命令替换即:
$(cmd)<=>`cmd`
唯一的区别就是转义字符的使用不一样。
$(command1;command2)
当小括号里有多个命令表达式时,使用分号 ; 分隔

单引号&双引号

1、单引号:里面的变量不会执行,即变量不会被替换
2、双引号:里面的变量会被执行,即变量会被替换

小礼物走一走,来简书关注我



作者:Chaweys
链接:https://www.jianshu.com/p/3129f22d3d94
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

上一篇:linux – 更改主机名重新启动将恢复为原始状态


下一篇:CentOS7设置hostname、hosts(永久更改)