目录
$()和反引号``
$()和反引号``的作用结果相同都是用来作命令替换的,通俗来讲就是把命令执行后的结果作为参数返回。
例如:将ls执行后的结果作为参数返回至echo
lhf@ubuntu:~$ echo $(ls)
examples.desktop source test.c workdir 公共的 模板 视频 图片 文档 下载 音乐 桌面
lhf@ubuntu:~$ echo `ls`
examples.desktop source test.c workdir 公共的 模板 视频 图片 文档 下载 音乐 桌面
但是$()和``还是稍有不同的,在多层次的复合替换中,``必须要额外的跳脱处理(反斜线),而$( )则不用,比较直观。
# 将cmd1执行结果作为cmd2参数,再将cmd2结果作为cmd3的参数
cmd1 $(cmd2 $(cmd3))
# 如果是用反引号,直接引用是不行的,还需要作跳脱处理
cmd1 `cmd2 \`cmd3\``
${}和$
${}和$ 的作用是变量替换,通过以下实验可看出,无法直接显示变量A的值,需要$或${}对变量进行转换。
lhf@ubuntu:~$ A=B
lhf@ubuntu:~$ echo A
A
lhf@ubuntu:~$ echo $A
B
lhf@ubuntu:~$ echo ${A}
B
${}与$效果相同,${}中的{}相当于一个界线符,可以很好的划分界限以免混淆,例如
#A与B之间划分界限
lhf@ubuntu:~$ echo "${A}B"
BB#把AB当成变量名,执行结果为空
lhf@ubuntu:~$ echo "$AB"
$(())
$(())整数运算
lhf@ubuntu:~$ A=2 B=3 C=4
lhf@ubuntu:~$ echo $((A+B+C))
9判断C与A值的大小,正确返回1,错误返回0
lhf@ubuntu:~$ echo $((C>A))
1