在刚刚学习写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 脚本实现简单的四则运算,有菜单提示等
因为在unix上自带的bshell就有这些功能。 cygwin里面也有这些。 可是,这种基本的功能,在win32平台下,微软似乎忘了。 有个外国人写了个软件Parser Generator (bum-bee). 他把unix的这些功能,做了个软件放到win32...
C#源码,实现简单游览器。 RangeScan扫描器源代码 ip地址扫描,发送邮箱。 ResizableLib 测试开源界面库Resizable。 RsPicture 自定义了一个图片库,然后引用测试。 SimplePlayer 简单的媒体播放源码。 Skin_...
实现的代码很简单。 CListCtrl 阙套其它控件 自绘了CListCtrl 控件,实现了其它控件阙套到List中并自绘等。主要的实现在CListReport类中。 CListCtrlTest 演示了重载CListCtrl后的使用方法。 CListItem Drawing ...
实现的代码很简单。 CListCtrl 阙套其它控件 自绘了CListCtrl 控件,实现了其它控件阙套到List中并自绘等。主要的实现在CListReport类中。 CListCtrlTest 演示了重载CListCtrl后的使用方法。 CListItem Drawing ...
实现的代码很简单。 CListCtrl 阙套其它控件 自绘了CListCtrl 控件,实现了其它控件阙套到List中并自绘等。主要的实现在CListReport类中。 CListCtrlTest 演示了重载CListCtrl后的使用方法。 CListItem Drawing ...
实现的代码很简单。 CListCtrl 阙套其它控件 自绘了CListCtrl 控件,实现了其它控件阙套到List中并自绘等。主要的实现在CListReport类中。 CListCtrlTest 演示了重载CListCtrl后的使用方法。 CListItem Drawing ...
实现的代码很简单。 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)实现在串口和...
p003_orient.zip 改变缺省的打印方向(3KB) 608,p002.zip 在VB5/6中增加打印预览功能(78KB) 609,p001.zip 简单的打印文件的例子(5KB) 610,o046_4.zip 识别常数的简单四则运算(3KB)' 611,o045...
p003_orient.zip 改变缺省的打印方向(3KB) 608,p002.zip 在VB5/6中增加打印预览功能(78KB) 609,p001.zip 简单的打印文件的例子(5KB) 610,o046_4.zip 识别常数的简单四则运算(3KB)' 611,o045...
p003_orient.zip 改变缺省的打印方向(3KB) 608,p002.zip 在VB5/6中增加打印预览功能(78KB) 609,p001.zip 简单的打印文件的例子(5KB) 610,o046_4.zip 识别常数的简单四则运算(3KB)' 611,o045...
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 .子...
四则混合运算模块.ec 回调函数.ec 图形窗口模块.ec 图片演示-西风.EC 图片演示.EC 图片组操作类.ec 在线更新.ec 在线更新2.ec 在线查找歌词.ec 地理位置查询.ec 堕之星辰1.2.ec 填充树型框.ec 复制目录...
四则混合运算模 块.ec 回调函数.ec 图形窗口模块.ec 图片演示-西风.EC 图片演示.EC 图片组操作类.ec 圆角 化.ec 圆角化加强.ec 圆角化窗口.ec 在任务栏显示或隐藏.ec 在线更新.ec 在线更新2.ec 在 线查找歌词.ec ...
四则混合运算模 块.ec 回调函数.ec 图形窗口模块.ec 图片演示-西风.EC 图片演示.EC 图片组操作类.ec 圆角 化.ec 圆角化加强.ec 圆角化窗口.ec 在任务栏显示或隐藏.ec 在线更新.ec 在线更新2.ec 在 线查找歌词.ec ...