[shell基础]——算术运算
shell只支持整数运算。一般可用let、expr、declare、$[]实现。
更精准的运算建议使用Linux下的bc工具——一款高精度计算语言。
1. let是shell内建的整数运算命令
## 可完成+ - * / % ** 加减乘除余幂等常规运算符
let a=+ ; echo $a
let b=/ ; echo $b
let c=%; echo $c
let d=a**; echo $d
## 可完成+= -= *= /= %= 等混合运算符
x= ;let x-= echo $x
y= ;let y/= echo $y # bash let.sh
## 移位运算
n=
echo "obase=2;$n" | bc #输出一个数的二进制
let "val1=$n<<2"
echo "obase=2;$val1" | bc ; echo $val1
let "val2=$n>>2"
echo "obase=2;$val2" | bc;echo $val2 # bash let.sh
##按位与、按位或、按位非、按位异或运算
n1=
n2=
echo -n "n1:"; echo "obase=2;$n1"|bc
echo -n "n2:"; echo "obase=2;$n2"|bc
let "value=$n1|$n2"
echo -n "|或运算:"; echo "obase=2;$value"|bc
let "value=$n1&$n2"
echo -n "&与运算:"; echo "obase=2;$value"|bc
let "value=$n1^$n2"
echo -n "^异或运算:";echo "obase=2;$value"|bc # bash let.sh
n1:
n2:
|或运算:
&与运算:
^异或运算:
## 自增自减运算
n1=
n2=
let "result_1=(++n1)" #先自增再赋值 #注意此时里面的n1并没有写成$n1
let "result_2=(n2++)" #先赋值再自增
echo "n1=$n1"
echo "n2=$n2"
echo "result_1=$result_1"
echo "result_2=$result_2" #bash let.sh
2. 其他运算符$[]、expr、declare
echo $[+]
echo $[/]
echo $[**] expr \* 2 #注意操作数运算符的空格;和运算符的转义 declare -i J
J=+
echo $J #bash test.sh
3.算术表达式 $((算术表达式))
i=
echo $((*i+))
echo $((*(i+))) #可以用括号表达先计算括号里的式子 #bash test.sh
4. bc工具(更常用)
echo "3^2" |bc #注意怎么写 echo "scale=3;10/3" |bc #scale=n表示保留n为小数 #bash test.sh 3.333
[shell基础]——算术运算的更多相关文章
- Shell基础学习小结
0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...
- Shell基础-环境变量配置文件
Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...
- shell基础二十篇 一些笔记
shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...
- shell基础(转)
shell基础1:文件安全与权限 http://bbs.chinaunix.net/forum/viewtopic.php?t=434579&highlight=wingger 附:Linux ...
- Linux实战教学笔记17:精简shell基础
第十七节 精简shell基础 标签(空格分隔): Linux实战教学笔记 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, ...
- shell基础及变量
一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...
- Shell 基础教程
一个比较好的shell基础教程: http://www.runoob.com/linux/linux-shell.html
- Linux基础学习(10)--Shell基础
第十章——Shell基础 一.Shell概述 1.Shell是什么: (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来 ...
- Linux Shell基础(下)
Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...
随机推荐
- 【MVC】ASP.NET MVC 请求生命周期
当一个asp.net mvc应用程序提出请求,为了响应请求,包含一些请求执行流程步骤! 在asp.net mvc应用程序Http request和Http response 过程中,主要包含8个步骤: ...
- Server2003安装SP2补丁提示密钥无效的解决方法
机器一直没有打SP2的补丁.几天要安装一个程序,还非要SP2不可.没办法.居然打补丁的时候出现了这样的错误信息: --------------------------- Service Pack 2 ...
- Android IOS WebRTC 音视频开发总结(三四)-- windows.20150706
最近好不容易更新了PC版的WEBRTC,总结下有哪些调整,文章来自博客园RTC.Blacker,支持原创,转载请说明出处. 图1:解决方案工程结构对比: 说明: 1, 最大的调整就是移除了VideoE ...
- Android IOS WebRTC 音视频开发总结(十二)-- sufaceview
谈到音视频不得不谈谈对视频呈现的理解,为了让大家能有一个更好的理解,先看看android里面SurfaceView的原理,后续陆续分享其绘画原理. 说明:本文是转载的,转载自哪里我也不知道,貌似经过很 ...
- 设计模式-中介者模式(Mediator)
场景分析: 众所周知,电脑有很多组成部分,如硬盘.内存.光驱.音频.键盘等,各个组件之间协同工作才能保证电脑的正常运行. 如果各个组件之间直接交互,可能会比较复杂,如下图: 将上面的各个组件抽象成类, ...
- C#实现图书馆程序导入ISO-2709格式(MARC)功能
1.导入 /// <summary> /// 导入ISO2709 /// </summary> /// <param name="sender"> ...
- MySQL: InnoDB 还是 MyISAM?
MyISAM存储引擎 MyISAM是 默认存储引擎.它基于更老的ISAM代码,但有很多有用的扩展.MyISAM存储引擎的一些特征:· 所有数据值先存储低字节.这使得数据机和操作系统分离.二进 ...
- B-树
定义: B-树是一种平衡的多路查找树,在文件系统中有所应用.主要用作文件的索引. 特性:(M为层数) 1.定义任意非叶子结点最多只有M个儿子:且M>2: 2.根结点的儿子数为[2, M]: 3. ...
- mysql中的 IN和FIND_IN_SET的查询问题
原来以为mysql可以进行这样的查询select id, list, name from table where 'daodao' IN (list); (一)注:1. table含有三个字 ...
- 删:[CentOS 7] 安装nginx
下载对应当前系统版本的nginx包(package) # wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-cent ...