![6192771036dce3f43153c78c6254eedf.png](https://i-blog.csdnimg.cn/blog_migrate/537f8307e208f5f630a8933c7ecca471.jpeg)
发行版为 red hat 以及centos,其他发行版未经验证 部分段落摘抄自网络,侵删 转载请注明出处 感谢点赞
单引号''和双引号"” 两者都是解决变量中间有空格的问题。
在bash中“空格”是一种很特殊的字符,比如在bash中这样定义str=this is String,这样就会报错,为了避免出错就得使用单引号''和双引号""。
单引号'',双引号""的区别是单引号''剥夺了所有字符的特殊含义,单引号''内就变成了单纯的字符。双引号""则对于双引号""内的参数替换($)和命令替换(``)是个例外。
比如说
n
结果就是$n,因为所有字符均被当做普通字符处理
改成双引号 echo "$n",结果就是3
![6b60ffed0cf51a7e79f8272983478b6d.png](https://i-blog.csdnimg.cn/blog_migrate/bda4591ef3d1eb5c9a773f1acdf6a2b4.png)
`` 学名叫“倒引号”或者“反引号”, 如果被“倒引号”括起来, 表示里面需要执行的是命令。Shell可以先执行``中的命令,将输出结果暂时保存,在适当的地方输出。
比如 `dirname $0`, 就表示需要执行 dirname $0 这个命令。
下面的例子中,将命令执行结果保存在变量中:
#!/bin/bash
上述代码命名为123.sh并赋予权限运行后,输出结果如下
![66293273d75d5b95787443c49a30f9fc.png](https://i-blog.csdnimg.cn/blog_migrate/b94374e82ce92478b828d09d479ca91f.png)
反引号是老的用法,$()是新的用法,推荐使用$()。使用方式和反引号一致,如下:
DATE1
通常情况下两种形式的变量替换是等价的,但是两者还有一点区别,反引号``不支持嵌套而$()则支持嵌套,如计算目录下第一个文件的行数:
lines
输出结果为:
89 anaconda-ks.cfg
此外,$() 仅在 Bash Shell 中有效,而反引号可在多种 Shell 中使用。