反引号`` 与 $() 都是命令替换
举例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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。