linux shell中,单引号、 双引号,反引号(``),$()的区别

1、单引号和双引号linux

首先,单引号和双引号,都是为了解决中间有空格的问题。ide

空格在linux中时做为一个很典型的分隔符,好比 string1=this is a string,这样执行会报错。为了不这个问题,所以就产生了单引号和双引号。他们的区别在于,单引号将剥夺其中的全部字符的特殊含义,而双引号中 的'$'(参数替换)和'`'(命令替换)是例外。因此,二者基本上没有什么区别,除非在内容中遇到了参数替换符$和命令替换符`。this

看下面的例子:
num=3
echo ‘$num’
$num
echo “$num”
3
若是须要在双引号””里面使用这两种符号,须要用反斜杠转义。
spa

2、反引号``
orm

这个东西的用法,我百度了一下,和$()是同样的。在执行一条命令时,会先将其中的 ``,或者是$() 中的语句看成命令执行一遍,再将结果加入到原命令中从新执行,例如:
echo `ls`
会先执行 ls 获得xx.sh等,再替换原命令为:
echo xx.sh
最后执行结果为
xx.sh
那么,平时咱们遇到的把一堆命令的执行结果输出到一个变量中,须要用这个命令替换符括起来,也就能够理解了。
这里又涉及到了一个问题,虽然很多系统工程师在使用替换功能时,喜欢使用反引号将命令括起来。可是根据POSIX规范,要求系统工程师采用的是$(命令)的形式。因此,咱们最好仍是遵循这个规范,少用``,多用$()
string