shell笔记-算术运算
算术运算
在Bash shell环境中,可以利用let、(( ))和[]执行基本的算术操作。而在进行高级操作时,
expr和bc这两个工具也会非常有用。
let命令可以直接执行基本的算术操作。当使用let时,变量名之前不需要再添加$,
[root@server0 ~]# a=5
[root@server0 ~]# let a++ #自加操作
[root@server0 ~]# echo $a
6
[root@server0 ~]# b=4
[root@server0 ~]# let b-- #自减操作
[root@server0 ~]# echo $b
3
[root@server0 ~]# x=1
[root@server0 ~]# y=2
[root@server0 ~]# let x+=100 #简写形式
[root@server0 ~]# let y-=100
[root@server0 ~]# echo $x
101
[root@server0 ~]# echo $y
-98
其它方法:
使用操作符[ ]
[root@server0 ~]# q=100
[root@server0 ~]# w=200
[root@server0 ~]# result=$[ q + w ]
[root@server0 ~]# echo $result
300
[root@server0 ~]# result2=$[ q + 123 ]
[root@server0 ~]# echo $result2
223
[root@server0 ~]# result3=[ $w + 1 ]
bash: 200: command not found...
[root@server0 ~]# result3=$[ $w + 1 ]
[root@server0 ~]# echo $result3
201
使用操作符(()),同上:
[root@server0 ~]# result4=(($q + 1))
-bash: syntax error near unexpected token `('
[root@server0 ~]# result4=(( $q + 1 ))
-bash: syntax error near unexpected token `('
[root@server0 ~]# result4=$(( $q + 1 )) #注意,括号前后有空格
[root@server0 ~]# echo $result4
101
[root@server0 ~]# result5=$(( q + 1 ))
[root@server0 ~]# echo $result5
101
使用expr方式:
[root@server0 ~]# result6=`expr $q + 1 ` #中间可以引用变量
[root@server0 ~]# echo $result6
101
[root@server0 ~]# result7=`expr 1 + 2 `
[root@server0 ~]# echo $result7
3
[root@server0 ~]# result8=$(expr $w + 1) #括号加不加空格都不影响,但是
[root@server0 ~]# echo $result8
201
[root@server0 ~]# result8=$( expr $w +1 ) #但是算术运算符号左右一定要加空格
expr: syntax error
[root@server0 ~]# result8=$( expr $w+1 )
[root@server0 ~]# echo $result8
200+1
以上这些方法只能用于整数运算,而不支持浮点数。
bc命令:
bc是一个用于数学运算的高级工具,这个精密计算器包含了大量的选项。我们可以
借助它执行浮点数运算并应用一些高级函数:
[root@server0 ~]# no=54
[root@server0 ~]# result=`echo "$no * 1.5" | bc`
[root@server0 ~]# echo $result
81.0
[root@server0 ~]# echo "4 * 0.56" | bc
2.24
其他参数可以置于要执行的具体操作之前,同时以分号作为定界符,通过stdin传递给bc。
设定小数精度。在下面的例子中,参数scale=2将小数位个数设置为2。因此,
bc将会输出包含两个小数位的数值。
[root@server0 ~]# echo "scale=2;3/8" | bc
.37
进制转换。用bc可以将一种进制系统转换为另一种。来看看如何将十进制转换成
二进制,然后再将二进制转换回十进制:
[root@server0 ~]# no=100
[root@server0 ~]# echo "obase=2;$no" | bc
1100100
[root@server0 ~]# no2=1100100
[root@server0 ~]# echo "obase=10;ibase=2;$no2" | bc
100
计算平方以及平方根:
[root@server0 ~]# echo "sqrt(100)" | bc
10
[root@server0 ~]# echo "10^10" | bc
10000000000
shell笔记-算术运算的更多相关文章
- bash shell笔记1 脚本基础知识
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/505644 * ...
- Bash shell 笔记总结(一) 转自http://www.bubuko.com/infodetail-509992.html,谢谢原作者
本文是上课笔记总结,涉及细节知识点会在以后文章说明! bash脚本编程: 脚本程序:解释器解释执行: shell: 交互式接口:编程环境: shell: 能够提供一些内部命令,并且能通过PATH环境变 ...
- Linux之Shell的算术运算
在Bash的算术运算中有以下几种方法:名称 语法 范例算术扩展 $((算术式)) r ...
- Bash shell 的算术运算有四种方式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1:使用 expr 外部程式加法 r=`expr 4 + 5`echo $r注意! '4' '+' '5' 这三者之间要有空白r=`e ...
- Java中执行shell笔记
在java中执行shell有好几种方式:第一种(exec)方式一 public static synchronized void runshell2() { File superuser = n ...
- bash shell笔记7 创建函数
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/525126 知 ...
- Linux shell脚本算术运算和逻辑运算
算术运算 默认不支持算数运算.所以需要特定的语法来完成, shell进行算数运算的工具: let declare (())或$(())或$[] bc let: 格式: let var=算术表达式 例如 ...
- shell笔记
shell:俗称操作系统的"外壳",就是命令解释程序. 是用户与Linux内核之间的接口. 是负责与用户交互,分析.执行用户输入的命令,并给出结果或出错提示. ...
- shell笔记-local、export用法 、declare、set
local一般用于局部变量声明,多在在函数内部使用. 1. Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止. 2. ...
随机推荐
- 利用Microsoft.Exchange.WebServices处理Office365邮件的几个属性
使用Microsoft.Exchange.WebServices可以很方便操作Office365邮件.这里列出几个重要的属性. 通常,代码里会先定义一个WebServices对象 ExchangeSe ...
- Spring MVC 返回类型为字符串时, 返回中文变成"?"处理
Spring controller 如下 @Controller public class SimpleController { @ResponseBody @RequestMapping(value ...
- Hadoop集群WordCount运行详解(转)
原文链接:Hadoop集群(第6期)_WordCount运行详解 1.MapReduce理论简介 1.1 MapReduce编程模型 MapReduce采用"分而治之"的思想,把对 ...
- iOS:创建带logol的二维码
//二维码生成 实质: 把字符串转变为 图片 // 需要 coreImage框架, 已经包含在了 UIKit框架里面 //MARK: 二维码中间内置图片,可以是公司logo + (UIImage *) ...
- bat 批处理切换到当前脚本所在文件夹
bat 批处理切换到当前脚本所在文件夹 切换到当前脚本所在的文件夹 ? 1 cd %~dp0 另外附上一些bat基本内容 —————————————————————————————— 批处理常用 ...
- Java vs C++ (7)导入
用法 import VS include Java import java.util.regex.Pattern; package com.slim; (1)假设少了; 会warning: C++ ...
- [leetcode]Subsets II @ Python
原题地址:https://oj.leetcode.com/problems/subsets-ii/ 题意: Given a collection of integers that might cont ...
- asp.net网站发布
1.iis里面新建一个网站,目录可以新建(例如:F:\dotNetWeb),还可以创建子文件夹如:F:\dotNetWeb\my,网站路径是可以自己设置的,也可以使用IIS默认的网站. 2.vs201 ...
- Spark Strcutured Streaming中使用Dataset的groupBy agg 与 join 示例(java api)
Dataset的groupBy agg示例 Dataset<Row> resultDs = dsParsed .groupBy("enodeb_id", "e ...
- 解决Ubuntu/debian的Apt-get 由于依赖关系安装失败的问题
The following packages have unmet dependencies: libssl-dev: Depends: libssl0.9.8 (= 0.9.8k-7ubuntu8) ...