在学习shell命令时,经常会分不清什么时候使用双引号什么时候使用单引号,或者认为没区别无所谓.
其实,还是有区别的:
单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数,具体的说,就是①美元符号②反引号③反斜杠,这3种特殊字符不被忽略。
不忽略美元符号意味着shell在双引号内部也进行变量名替换。
其实,还是有区别的:
单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数,具体的说,就是①美元符号②反引号③反斜杠,这3种特殊字符不被忽略。
不忽略美元符号意味着shell在双引号内部也进行变量名替换。
举例说明:
比如我定义一个变量name=bane,那么echo $name的结果就是bane;
将变量name放到双引号中,如:echo "the name is $name",结果会是the name is
bane.
将变量name放到单引号中,如:echo 'the name is $name',结果会是the name is
$name.
对比一下,在双引号中引用的是变量的值,单引号中则是单纯的字串!