Linux Shell 中的反引号,单引号,双引号的区别
1.反引号位 (`):在Linux中起着命令替换的作用。命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。
和$()是一样的。在执行一条命令时,会先将其中的 `` ,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行,
例如:echo `ls`
会先执行 ls 得到 xx.sh等,再替换原命令为:echo xx.sh
[[email protected] ~]# echo today is $(date "+%Y-%m-%d") today is 2017-11-07 [[email protected] ~]# echo today is `date "+%Y-%m-%d"` today is 2017-11-07注意:
[[email protected] ~]# echo Linux `echo Shell `echo today is `date "+%Y-%m-%d"``` Linux Shellecho today is 2017-11-07 #过多使用``会有问题 [[email protected] ~]# echo Linux `echo Shell $(echo today is $(date "+%Y-%m-%d"))` Linux Shell today is 2017-11-07 ``和$()混合使用 [[email protected] ~]# echo Linux $(echo Shell $(echo today is $(date "+%Y-%m-%d"))) Linux Shell today is 2017-11-07 #多个$()同时使用也不会有问题
注释:反引号与$()都是命令替换
最大的区别为:转义字符的使用不同。
反引号中:若要使用转自字符需要\\
$()中:若要使用转义字符用\
例1:反引号使用1个\,$()使用1个
例2:反引号使用2个\,$()使用1个
2.单引号he双引号
首先, 单引号和双引号,都是为了解决中间有空格的问题。
因为空格在linux中时作为一个很典型的分隔符,比如 string1=this is a string,这样执行就会报错。
为了避免这个问题,因此就产生了单引号和双引号。他们的区别在于,单引号将剥夺其中的所有字符的特殊含义,而双引号中的 ‘ $ ‘(参数替换)和‘ ` ‘(命令替换)和 ‘ \ ‘是例外。所以,两者基本上没有什么区别,除非在内容中遇到了参数替换符$和命令替换符`。
所以下面的结果:
num=3
echo ‘$num’
$num
echo “$num”
3
所以,如果需要在双引号””里面使用这两种符号的直接含义,需要用反斜杠转义
摘取于:https://www.cnblogs.com/yasmi/articles/5129571.html
3.大括号、花括号 { }
大括号拓展。将对大括号中的文件名做扩展
第一种:对大括号中的以 逗号分割的文件列表进行拓展。如 touch {a,b}.txt 结果为a.txt b.txt。
第二种:对大括号中以点点(..)分割的顺序文件列表起拓展作用,如:touch {a..d}.txt 结果为a.txt b.txt c.txt d.txt
4.双中括号[[ ]]
5.单小括号 ()
①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。
②命令替换。等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shell不支持,如tcsh。
③用于初始化数组。如:array=(a b c d)
6.单中括号 []
Test和[]中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt这种形式。无论是字符串比较还是整数比较都不支持大于号小于号。如果实在想用,对于字符串比较可以使用转义形式,如果比较"ab"和"bc":[ ab \< bc ],结果为真,也就是返回状态为0。[ ]中的逻辑与和逻辑或使用-a 和-o 表示。
7${ }变量替换
一般情况下,$var与${var}是没有区别的,但是用${ }会比较精确的界定变量名称的范围
[[email protected] WorkPath]# A=linux
[[email protected] WorkPath]# echo $AB #输出为空
[[email protected] WorkPath]# echo ${A}B # 精准的界定范围
linuxB
[[email protected] WorkPath]#
更多详细介绍 :http://www.cnblogs.com/chengd/p/7803664.html
8.布尔运算符
原文地址:https://www.cnblogs.com/yunshenbuzhichu/p/9923849.html