CSDN话题挑战赛第2期
参赛话题:学习笔记
引言
大家有没有一些疑惑,为什么在一些教程中,命令需要用单引号,我们也约定熟成地学习跟着教程来使用单引号,但我们有时候也会忘记到底是单引号还是双引号,于是不小心记成了双引号,发现也能达到我们想要的结果,于是乎——单引号和双引号到底有什么区别呢?
区别
单引号
属于强引用
,它会忽略所有被引起来的字符的特殊处理,被引用起来的字符会被原封不动
的使用;
而双引号
属于弱引用
,它会对一些被引起来的字符进行特殊处理。简单来说,单引号直接输出内部字符串,不解析特殊字符;双引号内则会解析特殊字符
。
单引号
单引号属于强引用,它会忽略所有被引起来的字符的特殊处理,被引用起来的字符会被原封不动的使用,唯一需要注意的点是不允许引用自身
;
单引号将其中的内容都作为了字符串来,忽略所有的命令和特殊字符,类似于一个字符串的用法
# csdn @ edu in ~ [9:08:35]
$ echo 'hallo'
hallo
# csdn @ edu in ~ [9:10:44]
$ echo '\\sdf'
\sdf
双引号
双引号属于弱引用,它会对一些被引起来的字符进行特殊处理。
双引号与单引号的区别在于其可以包含特殊字符
(单引号直接输出内部字符串,不解析特殊字符;双引号内则会解析特殊字符),包括', ", $, \
,如果要忽略特殊字符,就可以利用\
来转义,忽略特殊字符,作为普通字符输出:
反引号
反引号用来包含一个命令字符串
的,其中的命令会先执行
,得到的结果
会返回到层命令再执行
:
# csdn @ edu in ~ [9:16:10]
$ ls `ls`
1 as
# csdn @ edu in ~ [9:16:14]
$ ls
Code
# csdn @ edu in ~ [9:16:17]
$ ls Code
1 as
反引号类似与$(command)
类似
# csdn @ edu in ~ [9:16:20]
$ ls $(ls)
1 as