linux中单引号与双引号的区别和用法
1、单引号
单引号定义为所见即所得,单引号内部的内容原样输出,被单引号引起来的内容不管时变量还是常量都不会发生替换
#在表示连续字符串时,单引号、双引号、无引号都是一样的
[root@cn21 ~]# str1="string"
[root@cn21 ~]# str2='string2'
[root@cn21 ~]# str3=string3
[root@cn21 ~]# echo $str1
string
[root@cn21 ~]# echo $str2
string2
[root@cn21 ~]# echo $str3
string3
#在引用变量时,单引号所见即所得。单引号是全引用,被单引号括起来就不会变化
[root@cn21 ~]# var=123
[root@cn21 ~]# echo '$var'
$var
[root@cn21 ~]# echo $var
123
[root@cn21 ~]# echo "$var is"
123 is
2、双引号
双引号引用的内容,是先把内容中的命令、变量等解析出结果,然后再输出最终内容
[root@cn21 ~]# var2="test 123"
[root@cn21 ~]# var3='test 123'
[root@cn21 ~]# var4=test 123
-bash: 123: 未找到命令
[root@cn21 ~]# echo $var4
[root@cn21 ~]# echo "$var2 hello $var3" #先把内容中的命令、变量等解析出结果,然后再输出最终内容
test 123 hello test 123
[root@cn21 ~]# echo "$var2"
test 123
3、反引号
用于命令替换,相当于$()的作用
[root@cn21 ~]# echo `cat /etc/passwd`
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@cn21 ~]# echo $(cat /etc/hosts)
dd d d ddfafaffaf drrrrrtttt deeeeeeef
[root@cn21 ~]# echo "$(cat /etc/hosts)" #echo在引用变量的时候,注意一般要加双引号,不加的话会丢失细节,比如换行符等
dd
d
d
ddfafaffaf
drrrrrtttt
deeeeeeef
[root@cn21 ~]# echo `cat /etc/hosts`
dd d d ddfafaffaf drrrrrtttt deeeeeeef
[root@cn21 ~]# echo "`cat /etc/hosts`"
dd
d
d
ddfafaffaf
drrrrrtttt
deeeeeeef