文章目录

  • 一、引号的作用
  • 二、反引号 ``
  • 三、单引号 ''
  • 四、双引号 ""
  • 五、引号解释顺序






一、引号的作用



1、 将多个因为空格或者回车等分隔符隔开的字符串合在一起,避免被命令行解析分开;
例如 “a b c” 是一个字符串,而不会像 a b c 这样会被解析成三个单独的字符串。

2、让一些特殊符号保持原义。





二、反引号 ``



反引号 ` 这个字符所对应的键一般位于键盘的左上角, 和单引号 ’ 是有区别的。

反引号括起来的字符串会被 shell 解释为命令行,
在执行时,shell 首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。



虽然反引号 `cmd` 和 $(cmd) 变量替换的效果是一样的,但是使用上还是有一些区别的,
具体可戳 《 Linux 反引号 `cmd` 和 $(cmd) 的区别 》 了解。





三、单引号 ‘’



由单引号括起来的所有字符都作为普通字符出现。
即使是特殊字符,用单引号括起来以后,也会失去原有意义,而只作为普通字符解释。

例如'$a' 不会被展开做变更替换, ‘cmd’ 也不会执行其中的 cmd 命令;





四、双引号 “”



由双引号括起来的字符,除 $、反引号 (`) 和反斜杠(\)仍保留其特殊功能外,其余字符均作为普通字符对待:

$  :      用于变量替换
反引号` :  用于命令替换
反斜杠\ :  用于转义

需要注意的是,反斜杠 \ 的转义能力是有限的,仅当 \ 后面的字符是下述字符之一时, \ 才是转义字符:

$
`

\
newline换行符(回车)

转义字符告诉 Shell 不要对其后面的那个字符进行特殊处理,只是当作普通字符。





五、引号解释顺序



对于 bash 来说,命令的解释是 从左到右 的;
因此 先遇到单引号 或者 先遇到双引号,解释效果是不一样的;

举个例子:

$ a=1

$ echo "'$a'"
'1'              # 单引号失效

$ echo  '"$a"'
"$a"           # 双引号失效