文档章节

shell脚本中的双括号用法

zhangyujsj
 zhangyujsj
发布于 2016/06/27 20:03
字数 467
阅读 82
收藏 3

在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算。估计很多朋友都感觉比较难以接受。特变逻辑运算符”[]”使用时候,必须保证运算符与算数 之间有空格。 四则运算也只能借助:let,expr等命令完成。 今天讲的双括号”(())”结构语句,就是对shell中算数及赋值运算的扩展。

 

使用方法:

语法:

((表达式1,表达式2…))

特点:

1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。

2、在双括号结构中,所有变量可以不加入:“$”符号前缀。

3、双括号可以进行逻辑运算,四则运算

4、双括号结构 扩展了for,while,if条件测试运算

5、支持多个表达式运算,各个表达式之间用“,”分开

使用实例:

  • 扩展四则运算

1

2

3

4

5

6

7

8

9

10

11

#!/bin/sh

 

a=1;

b=2;

c=3;

 

((a=a+1));

echo $a;

 

a=$((a+1,b++,c++));

echo $a,$b,$c

 

运行结果:

sh testsh.sh
2
3,3,4

双括号结构之间支持多个表达式,然后加减乘除等c语言常用运算符都支持。如果双括号带:$,将获得表达式值,赋值给左边变量。

  • 扩展逻辑运算

1

2

3

4

5

6

7

8

9

10

#!/bin/sh

 

a=1;

b="ab";

 

 

echo $((a>1?8:9));

 

((b!="a"))&& echo "err2";

((a<2))&& echo "ok";

 

运行结果:

sh testsh.sh
9
err2
ok

  • 扩展流程控制语句(逻辑关系式)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

#!/bin/sh

 

num=100;

total=0;

 

for((i=0;i<=num;i++));

do

    ((total+=i));

done

echo $total;

 

total=0;

i=0;

while((i<=num));

do

    ((total+=i,i++));

done

echo $total;

 

if((total>=5050));then

    echo "ok";

fi

 

运算结果:

sh testsh.sh
5050
5050
ok

本文转载自:

zhangyujsj
粉丝 24
博文 358
码字总数 224241
作品 0
广州
私信 提问
shell 中的括号

shell 中的括号 ----正在学习shell,途中做些笔记,整理整理,方便以后翻阅。---- ---- RHEL6.2x64,GNU bash version 4.1.2(1)-release ---- 在编写shell scripts时,经常会用到括号,各种括...

liangxiaowei66
2014/04/15
0
0
Shell脚本中的各种括号

小括号的用法 1、数组赋值 2、子Shell赋值 在子shell中变量var值为lookback,但是在上级shell中就不是这个值,可以看出是在子shell中有效的赋值 3、命令集合结果重定向 4、$()的用法 $(cmd)...

张欢19933
2016/03/07
192
0
shell 括号的特殊用法

Shell中的括号有其特殊的用法, 现总结如下: 1. 符号$后的括号 ${a} 变量a的值, 在不引起歧义的情况下可以省略大括号. $(cmd) 命令替换, 结果为shell命令cmd的输出, 和效果相同, 不过某些She...

高健2013
2015/02/11
0
0
linux shell中所有括号的用法

参考:http://blog.sina.com.cn/s/blog_4a2a29f00100o2os.html 操作环境:centos6,虚拟机 1.大括号: ${var name}:shell中变量的原形,var=variable eg:[root@localhost ~]# var=is [root@......

一点相思怎堪离丶
2016/09/29
41
0
shell中的括号(小括号,中括号,大括号)

一、小括号,园括号() 1、单小括号 () ①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以...

说谎的少年
2015/10/09
212
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot 403 问题

添加WebAppConfigurer 配置 @Configuration@EnableAutoConfigurationpublic class WebAppConfigurer extends WebMvcConfigurerAdapter { public WebAppConfigurer() { } ......

布袋和尚_爱吃鱼
7分钟前
1
0
Python自动更换壁纸爬虫与tkinter结合

直接上代码 import ctypesimport timeimport requestsimport osfrom threading import Threadfrom tkinter import Tk, Label, Button,Entry,StringVar,messagebox# '放到AppData\Roami......

物种起源-达尔文
7分钟前
1
0
Postgresql Study 笔记

Postgresql 安装 Windows, MAC Install Postgresql 下载地址: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads Linux Install sudo apt-get update sudo apt-get in......

slagga
9分钟前
1
0
layer.open 打开新页面传参问题

如图所示,点击出售,把A页面的数据传到弹框上面,因为弹框比较复杂,所以使用引入一个新页面。 A.html a.js B.html b.js 1、第一种方案 sellInte: function (){ var obj = document.g...

木九天
12分钟前
1
0
沙龙报名 | 区块链数据服务技术应用实践

京东云是国内首家提供区块链数据在线分析服务产品的公司,也是行业内首家对区块链数据服务进行开源的公司。 本次沙龙是京东云BDS开源后,首次在深圳举办线下沙龙,我们将邀请京东云BDS团队核...

京东云技术新知
13分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部