单引号双引号的区别

单引号概念

  可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么.

双引号概念

   把双引号内的内容输出出来,如果内容中有命令、变量,会先把变量、命令解析出结果,然后在输出最终的内容来.

   双引号内命令或变量的写法为`命令或变量`或$(命令或变量).

无引号:

   把内容输出出来,可能不会将含有空格的字符串视为一个整体输出,如果内容中有命令或变量等,会先把变量、命令解析出结果,然后在输出最终的内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用,不过最好用双引号代替.工作中多用双引号,除非你有特殊明确的要求.

单引号实战:

#单引号原内容是什么就输出什么

[root@C66-MoBan ~]# echo 'today is date'

today is date 

[root@C66-MoBan ~]# echo 'today is `date`'

today is `date`

双引号实战:

双引号不加变量的结果

[root@C66-MoBan ~]# echo "today is date"  

today is date 

双引号内加变量的写法一

[root@C66-MoBan ~]# echo "today is `date`"

today is Wed Apr  1 11:44:17 CST 2015

双引号内加变量的写法二

[root@C66-MoBan ~]# echo "today is $(date)"

today is Wed Apr  1 11:44:39 CST 2015

2、脚本中变量定义后,调用测试

定义一个不带引号的变量

[root@C66-MoBan ~]# oldboy=test 

不带引号显示一个变量解析后的内容

[root@C66-MoBan ~]# echo $oldboy 

test

单引号显示一个变量本身

[root@C66-MoBan ~]# echo '$oldboy'

$oldboy

双引号显示一个变量内容,引号内可以是变量字符串等

[root@C66-MoBan ~]# echo "$oldboy" 

test

3、脚本中定义变量测试

不加引号无法定义

[root@C66-MoBan ~]# oldboy=this is test

-bash: is: command not found

一般应用时,对于变量的定义我们要加双引号

[root@C66-MoBan ~]# oldboy="this is test"

[root@C66-MoBan ~]# echo $oldboy

this is test

4、命令行带空格字符串可以不加引号

[root@C66-MoBan ~]# echo I am oldboy. >>oldboy.txt

[root@C66-MoBan ~]# cat oldboy.txt 

I am oldboy.

[root@C66-MoBan ~]# echo "I am oldboy.">>oldboy.txt

[root@C66-MoBan ~]# cat oldboy.txt 

I am oldboy.

I am oldboy.

虽然不加引号可以追加内容到oldboy.txt中,工作中我们习惯用""号替代