文档章节

书写优雅的shell脚本(五)- shell中(())双括号运算符

 流云的博客
发布于 2015/05/29 22:41
字数 460
阅读 327
收藏 24

在使用shell的逻辑运算符”[]”使用时候,必须保证运算符与算数之间有空格。 四则运算也只能借助:let,expr等命令完成。 今天讲的双括号”(())”结构语句,就是对shell中算数及赋值运算的扩展。 

1.语法: 
((表达式1,表达式2…)) 

2.特点: 
(1)在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。 
(2)在双括号结构中,所有变量可以不加入:“$”符号前缀。 
(3)双括号可以进行逻辑运算,四则运算 
(4)双括号结构 扩展了for,while,if条件测试运算 
(5)支持多个表达式运算,各个表达式之间用“,”分开 

3.使用实例: 
3.1 扩展四则运算 
代码如下: 
#!/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 

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

3.2 扩展逻辑运算 
代码如下: 
#!/bin/sh 
a=1; 
b="ab"; 
echo $((a>1?8:9)); 
((b!="a"))&& echo "err2"; 
((a<2))&& echo "ok"; 
运行结果: 

err2 
ok 

3.3 扩展条件测试运算(if)
代码如下:
a=1
b=2
if ((a<b));then
echo "true";
fi
if ((a>b));then
echo "false"
fi
运行结果:
true

3.4 扩展流程控制语句(逻辑关系式) 
代码如下: 
#!/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 
运算结果: 
5050 
5050 
ok 

有了双括号运算符:[[]],[],test 逻辑运算,let,expr就不是必须的了。

本文转载自:http://blog.csdn.net/xyls12345/article/details/26251121

粉丝 2
博文 40
码字总数 18974
作品 0
武汉
私信 提问
加载中

评论(1)

WoGeek
WoGeek
不错,好东西
shell脚本中的双括号用法

在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算。估计很多朋友都感觉比较难以接受。特变逻辑运算符”[]”使用时候,必须保证运算符与算数 之间有空格。 四则运算也只能...

zhangyujsj
2016/06/27
59
0
shell中的括号(小括号,中括号,大括号)

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

说谎的少年
2015/10/09
212
0
shell 中的括号

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

liangxiaowei66
2014/04/15
0
0
Shell脚本学习笔记

以前多多少少接触过一些shell命令,用的不多,现在打算好好了解一下。看了Linux Shell脚本教程,这里做点笔记: Shell 在线环境 tutorialspoint 几种常见的Shell bash: Linux标准默认的shell...

Charly张
2016/01/17
125
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
37
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
昨天
6
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
昨天
2.6K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
昨天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部