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

在使用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就不是必须的了。

时间: 2024-08-02 07:01:07

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

shell脚本介绍 shell脚本结构和执行 date命令用法 shell脚本中的变量

一.shell脚本介绍shell脚本要想写好,必须通过不断地去练习写才能写好,没有捷径要在我们拿到一个需求的时候有一个脚本的大致思路,想到需求怎么去实现shell脚本可以大大提高我们的工作效率二.shell脚本结构和执行[[email protected] ~]# mkdir shell //创建一个shell文件夹,存放实验的shell脚本[[email protected] ~]# cd shell/[[email protected] shell]# ls[[email protected

shell脚本修改json中某个字段的值

shell脚本修改json中某个字段的值 思路:通过awk来找到旧数据,然后用sed来替换旧数据 源码 config.json { "name": "the_name", "id": "132869", "content_url": "https://hot.example.com/", "enable_feature1": "true", &qu

linux shell “(())” 双括号运算符使用

导读 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(())"结构语句,就是对shell中算数及赋值运算的扩展. 使用方法: 语法: ((表达式1,表达式2-)) 特点: 1.在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等. 2.在双括号结构中,所有变量

linux shell &ldquo;(())&rdquo; 双括号运算符使用

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

20.1-4 shell脚本介绍 shell脚本结构和执行 date命令用法 shell脚本中的变量

20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法%w 星期几 %W今年的第几周cal是显示日历的时间戳可以相互查询 20.4 shell脚本中的变量 原文地址:http://blog.51cto.com/13450039/2104595

[shell脚本]-在shell中定义expect function

概述 使用shell脚本加expect 实现批量登录,互信等,免交互式操作,之前主要写两个脚本,一个是expect脚本里面主要是接受参数,进行ssh 免交互操作,另一个是shell脚本,里面调用expect的脚本,传入参数, 现在需要把expect和shell脚本内容全部合并在shell脚本中 可以用shell function 里面定义expect 例子: shell 脚本中定义function, 然后把<< EOF 所有内容,当作expect 标准输入 #!/bin/bash functi

Saiku数据库迁移后的刷新脚本-Shell脚本读取数据库中的数据(二十三)

Saiku数据库迁移后的刷新脚本 之前有谈过对saiku中的数据进行刷新,因为saiku默认会从缓存中查询数据,但是配置不使用缓存又会效率低下... 所以这里就需要做一个数据刷新,每次ETL之后都需要执行一遍数据刷新脚本. 刷新脚本主要分为两部分 1.使用shell命令从数据库中读取已有的用户信息 (因为已经做过数据迁移,数据库已经从h2转为我们自己的mysql) saikuRefresh.sh #!/bin/bash #数据库连接信息 HOSTNAME="10.11.22.33" #

利用shell脚本统计文件中出现次数最多的IP

比如有如下文件test.txt 1  134.102.173.43 2  134.102.173.43 3  134.102.171.42 4  134.102.170.9 要统计出现次数最多的IP可以利用以下shell脚本: cat test.txt | awk '{print $2}' | sort | uniq -c | sort -n -r | head -n 1 [原创]统计IP次数最多的 一条还是很常见,很实用,很简单的命令 netstat -ntu Active Internet

linux crontab定时任务运行shell脚本(shell执行sql文件)

今天做个linux定时任务(每晚12点把表汇总). 顺便写个博客记录一下~~ 为什么用linux定时任务,而不是在项目加定时任务呢?原因就是防止因为各种原因项目崩溃..所以就用了更加稳定的linux定时任务(我是这么想的( ^_^ )). 起初我感觉很简单,以为顶多半小时就搞定了,,,结果从10点弄到12点半才搞定(主要是我英语太渣和数据库报错导致)... ︿( ̄︶ ̄)︿废话到此结束--------------- crontab 格式     * * * * *      XXX 分    时