`

shell实现四则运算简单方法

 
阅读更多

在刚刚学习写shell 批处理时候,进行逻辑运算中,少不了需要进行基础的:四则运算,这里说说在linux shell 里面简单的实现方法。
1.简单方法
$ b=$((5*5+5-3/2))
$ echo $b
29

在linux shell中,我们可以使用 $(()) 将表达式放在括号中,即可达到运算的功能。
2.其它方法:
用:expr 实现运算
$ expr 5 - 4
1

注意:将需要运算的表达式写入在expr 后面即可,保证 参数与运算符号中间有空格隔开。

 

类别 语法 说明
条件判断 expr1 \| expr2 如果 expr1 不是零或 null 则传回 expr1,否则传回 expr2。
expr1 \& expr2 如果 expr1 及 expr2 都不为零或 null,则传回 expr1,否则传回 0。
四则运算 expr1 + expr2 传回 expr1 加 expr2 后的值。
expr1 - expr2 传回 expr1 减 expr2 后的值。
expr1\* expr2 传回 expr1 乘 expr2 后的值。
expr1 / expr2 传回 expr1 除 expr2 后的值。
expr1 % expr2 传回 expr1 除 expr2 的余数。
大小判断 expr1 \> expr2 如果 expr1 大于 expr2 则传回 1,否则传回 0。如果 expr1 及 expr2 都是数字,则是以数字大小判断,否则是以文字判断。以下皆同。
expr1 \< expr2 如果 expr1 小于 expr2 则传回 1,否则传回 0。
expr1 = expr2 如果 expr1 等于 expr2 则传回 1,否则传回 0。
expr1 != expr2 如果 expr1 不等于 expr2 则传回 1,否则传回 0。
expr1 \>= expr2 如果 expr1 大于或等于 expr2 则传回 1,否则传回 0。
expr1 \<= expr2 如果 expr1 小于或等于 expr2 则传回 1,否则传回 0。
文字处理 expr1 : expr2 比较一固定字符串,即 regular expression。可以使用下列字符来辅助:

. 匹配一个字符。

$ 找字符串的结尾。

[list] 找符合 list 中的任何字符串。

* 找寻 0 个或一个以上在 * 之前的字。

\( \) 传回括号中所匹配的字符串。

3.浮点运算

$ expr 5.0 - 4
expr: non-integer argument

$ echo $((5.0-4))

-bash: 5.0-4: syntax error in expression (error token is ".0-4")

从上面运算结果,看来上面表达式,不足以支持浮点运算了 查阅资料才发现:bash 不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk 处理。

方法一:
[chengmo@centos5 ~]$ c=$(echo "5.01-4*2.0"|bc)
[chengmo@centos5 ~]$ echo $c
-2.99

方法二:
[chengmo@centos5 ~]$ c=$(awk 'BEGIN{print 7.01*5-4.01 }')
[chengmo@centos5 ~]$ echo $c
31.04

注:在shell 中$() 与 ``等效。 中间包含命令语句执行,返回执行结果。


参考至:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839556.html

如有错误,欢迎指正

邮箱:czmcj@163.com

分享到:
评论

相关推荐

    shell 实现简单四则运算

    用Shell 脚本实现简单的四则运算,有菜单提示等

    用lex&yacc制作的计算器

    因为在unix上自带的bshell就有这些功能。 cygwin里面也有这些。 可是,这种基本的功能,在win32平台下,微软似乎忘了。 有个外国人写了个软件Parser Generator (bum-bee). 他把unix的这些功能,做了个软件放到win32...

    vc++ 开发实例源码包

    C#源码,实现简单游览器。 RangeScan扫描器源代码 ip地址扫描,发送邮箱。 ResizableLib 测试开源界面库Resizable。 RsPicture 自定义了一个图片库,然后引用测试。 SimplePlayer 简单的媒体播放源码。 Skin_...

    vc++ 应用源码包_1

    实现的代码很简单。 CListCtrl 阙套其它控件 自绘了CListCtrl 控件,实现了其它控件阙套到List中并自绘等。主要的实现在CListReport类中。 CListCtrlTest 演示了重载CListCtrl后的使用方法。 CListItem Drawing ...

    vc++ 应用源码包_6

    实现的代码很简单。 CListCtrl 阙套其它控件 自绘了CListCtrl 控件,实现了其它控件阙套到List中并自绘等。主要的实现在CListReport类中。 CListCtrlTest 演示了重载CListCtrl后的使用方法。 CListItem Drawing ...

    vc++ 应用源码包_2

    实现的代码很简单。 CListCtrl 阙套其它控件 自绘了CListCtrl 控件,实现了其它控件阙套到List中并自绘等。主要的实现在CListReport类中。 CListCtrlTest 演示了重载CListCtrl后的使用方法。 CListItem Drawing ...

    vc++ 应用源码包_5

    实现的代码很简单。 CListCtrl 阙套其它控件 自绘了CListCtrl 控件,实现了其它控件阙套到List中并自绘等。主要的实现在CListReport类中。 CListCtrlTest 演示了重载CListCtrl后的使用方法。 CListItem Drawing ...

    vc++ 应用源码包_3

    实现的代码很简单。 CListCtrl 阙套其它控件 自绘了CListCtrl 控件,实现了其它控件阙套到List中并自绘等。主要的实现在CListReport类中。 CListCtrlTest 演示了重载CListCtrl后的使用方法。 CListItem Drawing ...

    嵌入式课程设计 华东交通大学

    2) 实现简单的Shell命令 hostname命令在屏幕上打印一句话,即自定义的本机名称。 hello 命令可以带多个参数,如hello a b c d,回车后会显示: hello,I am Genie your argv is: a b c d (3)实现在串口和...

    VB编程资源大全(源码 其它3)

    p003_orient.zip 改变缺省的打印方向(3KB) 608,p002.zip 在VB5/6中增加打印预览功能(78KB) 609,p001.zip 简单的打印文件的例子(5KB) 610,o046_4.zip 识别常数的简单四则运算(3KB)' 611,o045...

    VB编程资源大全(源码 其它1)

    p003_orient.zip 改变缺省的打印方向(3KB) 608,p002.zip 在VB5/6中增加打印预览功能(78KB) 609,p001.zip 简单的打印文件的例子(5KB) 610,o046_4.zip 识别常数的简单四则运算(3KB)' 611,o045...

    VB编程资源大全(源码 其它2)

    p003_orient.zip 改变缺省的打印方向(3KB) 608,p002.zip 在VB5/6中增加打印预览功能(78KB) 609,p001.zip 简单的打印文件的例子(5KB) 610,o046_4.zip 识别常数的简单四则运算(3KB)' 611,o045...

    VB编程资源大全(源码 其它4)

    p003_orient.zip 改变缺省的打印方向(3KB) 608,p002.zip 在VB5/6中增加打印预览功能(78KB) 609,p001.zip 简单的打印文件的例子(5KB) 610,o046_4.zip 识别常数的简单四则运算(3KB)' 611,o045...

    易语言 茶凉专用模块

    本模块可以编程更简单,仅仅用核心支持库编写。 @备注: 官方论坛:http://bbs.clrje.cn/ 官方QQ群:92716369 ------------------------ -------------------------- ------------------------------ .版本 2 .子...

    易语言模块914个

    四则混合运算模块.ec 回调函数.ec 图形窗口模块.ec 图片演示-西风.EC 图片演示.EC 图片组操作类.ec 在线更新.ec 在线更新2.ec 在线查找歌词.ec 地理位置查询.ec 堕之星辰1.2.ec 填充树型框.ec 复制目录...

    1345个易语言模块

    四则混合运算模 块.ec 回调函数.ec 图形窗口模块.ec 图片演示-西风.EC 图片演示.EC 图片组操作类.ec 圆角 化.ec 圆角化加强.ec 圆角化窗口.ec 在任务栏显示或隐藏.ec 在线更新.ec 在线更新2.ec 在 线查找歌词.ec ...

    1350多个精品易语言模块

    四则混合运算模 块.ec 回调函数.ec 图形窗口模块.ec 图片演示-西风.EC 图片演示.EC 图片组操作类.ec 圆角 化.ec 圆角化加强.ec 圆角化窗口.ec 在任务栏显示或隐藏.ec 在线更新.ec 在线更新2.ec 在 线查找歌词.ec ...

Global site tag (gtag.js) - Google Analytics