linux 中的单引号 和双引号有什么区别吗?

ls -a | grep "^尀." 和 ls -a | grep ✀^尀.✀的作用一样
2024-12-30 08:55:24
推荐回答(3个)
回答1:

单引号与双引号的最大不同在于双引号仍然可以保有变量的内容,但单引号内仅能是
一般字符 ,而不会有特殊符号。我们以底下的例子做说明:假设您定义了一个变量,
name=VBird ,现在想以 name 这个变量的内容定义出 myname 显示 VBird its me 这
个内容,要如何订定呢?

[root@linux ~]# name=VBird
[root@linux ~]# echo $name
VBird
[root@linux ~]# myname="$name its me"
[root@linux ~]# echo $myname
VBird its me
[root@linux ~]# myname='$name its me'
[root@linux ~]# echo $myname
$name its me

发现了吗?没错!使用了单引号的时候,那么 $name 将失去原有的变量内容, 仅为
一般字符的显示型态而已!这里必需要特别小心在意!
本文出自 51CTO.COM技术博客

回答2:

当然有区别了
在CU上面有专门的帖子解释单引号和双引号的差别

举个最简单的例子

lix@lxLaptop:~/bash/lx/done/pms$ a=127711
lix@lxLaptop:~/bash/lx/done/pms$ cat date.log |grep "$a"
Mon Jun 21 17:00:02 CST 2010 1277110506 1277110802 296
Mon Jun 21 17:15:03 CST 2010 1277111651 1277111703 52
Mon Jun 21 17:30:02 CST 2010 1277112247 1277112602 355
lix@lxLaptop:~/bash/lx/done/pms$ cat date.log |grep '$a'
lix@lxLaptop:~/bash/lx/done/pms$

回答3:

说到引号的区别,先要说为什么要用引号,shell命令中有些特殊字符,比如$,^,*等等,如果我们想要把这些特殊字符的功能关掉的话就必须使用引号或者斜杠\,比如 ls "a*",或者ls 'a*',或者ls a\*这就会输出名字为a*的文件,而不是以a开头的文件。
不说斜杠,只说单引号和双引号的区别,它们在shell中的引文的叫法不一样,双引号叫soft quote,单引号叫hard quote,顾名思义,单引号更加严格,比如overawe的例子,对于$符号,单引号一样会关掉它的功能,而双引号不会,它会把它当成变量来替换掉,有兴趣的话你可以比较单引号套双引号的变量和双套单的变量输出的区别,a=1;echo "'$a'" ;echo '"$a"'
希望对你有帮助