单引号双引号的区别
单引号概念
可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么.
双引号概念
把双引号内的内容输出出来,如果内容中有命令、变量,会先把变量、命令解析出结果,然后在输出最终的内容来.
双引号内命令或变量的写法为`命令或变量`或$(命令或变量).
无引号:
把内容输出出来,可能不会将含有空格的字符串视为一个整体输出,如果内容中有命令或变量等,会先把变量、命令解析出结果,然后在输出最终的内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用,不过最好用双引号代替.工作中多用双引号,除非你有特殊明确的要求.
单引号实战:
#单引号原内容是什么就输出什么
[[email protected] ~]# echo ‘today is date‘
today is date
[[email protected] ~]# echo ‘today is `date`‘
today is `date`
双引号实战:
双引号不加变量的结果
[[email protected] ~]# echo "today is date"
today is date
双引号内加变量的写法一
[[email protected] ~]# echo "today is `date`"
today is Wed Apr 1 11:44:17 CST 2015
双引号内加变量的写法二
[[email protected] ~]# echo "today is $(date)"
today is Wed Apr 1 11:44:39 CST 2015
2、脚本中变量定义后,调用测试
定义一个不带引号的变量
[[email protected] ~]# oldboy=test
不带引号显示一个变量解析后的内容
[[email protected] ~]# echo $oldboy
test
单引号显示一个变量本身
[[email protected] ~]# echo ‘$oldboy‘
$oldboy
双引号显示一个变量内容,引号内可以是变量字符串等
[[email protected] ~]# echo "$oldboy"
test
3、脚本中定义变量测试
不加引号无法定义
[[email protected] ~]# oldboy=this is test
-bash: is: command not found
一般应用时,对于变量的定义我们要加双引号
[[email protected] ~]# oldboy="this is test"
[[email protected] ~]# echo $oldboy
this is test
4、命令行带空格字符串可以不加引号
[[email protected] ~]# echo I am oldboy. >>oldboy.txt
[[email protected] ~]# cat oldboy.txt
I am oldboy.
[[email protected] ~]# echo "I am oldboy.">>oldboy.txt
[[email protected] ~]# cat oldboy.txt
I am oldboy.
I am oldboy.
虽然不加引号可以追加内容到oldboy.txt中,工作中我们习惯用""号替代