第五部分(Shell)

2020-04-06

算术表达式

$((expression))

(以上括号中的)表达式是指算术表达式,它由数值和算术操作符组成。
算术表达式只支持整数(全部是数字,不带小数点),但是能执行很多不同的操作。这里是一些它支持的操作符:

算术操作符
在算术表达式中空格并不重要,并且表达式可以嵌套。
一对括号可以用来把多个子表达式括起来。

[root@VM_0_7_centos shellTest]# echo $((2+5))
7
[root@VM_0_7_centos shellTest]# echo $((2-5))
-3
[root@VM_0_7_centos shellTest]# echo $((2*5))
10
[root@VM_0_7_centos shellTest]# echo $((2/5))
0
[root@VM_0_7_centos shellTest]# echo $((10/5))
2
[root@VM_0_7_centos shellTest]# echo $((10%3))
1
[root@VM_0_7_centos shellTest]# echo $((10**3))
1000
[root@VM_0_7_centos shellTest]# echo $(($((5**2)) * 3))
75
[root@VM_0_7_centos shellTest]# echo $(((5**2) * 3))
75
[root@VM_0_7_centos shellTest]# echo $((5**2 * 3))
75

花括号展开

通过它,你可以从一个包含花括号的模式中创建多个文本字符串。

[root@VM_0_7_centos shellTest]# echo Front-{A,B,C}-Back
Front-A-Back Front-B-Back Front-C-Back

花括号展开模式可能包含一个开头部分叫做报头,一个结尾部分叫做附言。花括号表达式本身可能包含一个由逗号分开的字符串列表,或者一个整数区间,或者单个的字符的区间。这种模式不能嵌入空白字符。花括号展开可以嵌套。

[root@VM_0_7_centos shellTest]# echo Number_{1..5}
Number_1 Number_2 Number_3 Number_4 Number_5
[root@VM_0_7_centos shellTest]# echo {Z..A}
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
[root@VM_0_7_centos shellTest]#  echo a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b

那么这对什么有好处呢?最常见的应用是,创建一系列的文件或目录列表。例如,如果我们是摄影师,有大量的相片。我们想把这些相片按年月先后组织起来。首先,我们要创建一系列以数值 “年-月” 形式命名的目录。通过这种方式,可以使目录名按照年代顺序排列。我们可以手动键入整个目录列表,但是工作量太大了,并且易于出错。反之,我们可以这样做:

[root@VM_0_7_centos shellTest]# mkdir Pics
[root@VM_0_7_centos shellTest]# cd Pics/
[root@VM_0_7_centos Pics]# mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12}
[root@VM_0_7_centos Pics]# ls
2007-01  2007-04  2007-07  2007-10  2008-01  2008-04  2008-07  2008-10  2009-01  2009-04  2009-07  2009-10
2007-02  2007-05  2007-08  2007-11  2008-02  2008-05  2008-08  2008-11  2009-02  2009-05  2009-08  2009-11
2007-03  2007-06  2007-09  2007-12  2008-03  2008-06  2008-09  2008-12  2009-03  2009-06  2009-09  2009-12

参数展开

[root@VM_0_7_centos Pics]# echo $USER
root
[root@VM_0_7_centos Pics]# printenv | less # 查看有效的变量列表

命令替换

命令替换允许我们把一个命令的输出作为一个展开模式来使用:

[root@VM_0_7_centos Pics]#  echo $(ls)
2007-10 2007-11 2007-12 2008-10 2008-11 2008-12 2009-10 2009-11 2009-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值