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基础]——算术运算的更多相关文章

  1. Shell基础学习小结

    0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...

  2. Shell基础-环境变量配置文件

    Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...

  3. shell基础二十篇 一些笔记

    shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...

  4. shell基础(转)

    shell基础1:文件安全与权限 http://bbs.chinaunix.net/forum/viewtopic.php?t=434579&highlight=wingger 附:Linux ...

  5. Linux实战教学笔记17:精简shell基础

    第十七节 精简shell基础 标签(空格分隔): Linux实战教学笔记 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, ...

  6. shell基础及变量

    一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...

  7. Shell 基础教程

    一个比较好的shell基础教程: http://www.runoob.com/linux/linux-shell.html

  8. Linux基础学习(10)--Shell基础

    第十章——Shell基础 一.Shell概述 1.Shell是什么: (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来 ...

  9. Linux Shell基础(下)

    Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...

随机推荐

  1. Oracle笔记 二、常用dba命令行

    1.给用户解锁 alter user scott account unlock; 2.注销.断开.切换当前用户连接 quit conn scott/tiger 3.用户权限查询 A .查看所有用户: ...

  2. 十一、Struts2封装请求参数的方式

    十一.Struts2封装请求参数的方式 方式一.Action 本身作为model对象,通过成员setter封装(一个名字为params的拦截器干的) 注意:表单中的名称要和动作类中的名称一致(这是必须 ...

  3. C++ STL 简单记录

    1,STL提供三种类型的组件:容器.迭代器.算法. 容器: 顺序容器(vector.list.deque.string等)是一系列元素的有序集合: 关联容器(set.multiset.map.mult ...

  4. ASP.NET验证控件二

    RequiredFieldValidator 验证控件 页面布局: <div> <h1>RequiredFieldValidator 验证控件</h1>   用户名 ...

  5. ASP.NET MVC5 高级编程 第2章 控制器

    参考资料<ASP.NET MVC5 高级编程>第5版 第2章 控制器 控制器:响应用户的HTTP 请求,并将处理的信息返回给浏览器. 2.1 ASP.NET MVC 简介 MVC 模式中的 ...

  6. Python-2.7.11+Django-1.9.4安装配置

    1.去python官网下载2.7的最新版本 https://www.python.org/downloads 1.1 解压Python-2.7.11.tgz tar xvf Python-2.7.11 ...

  7. 快速清理Visual Studio起始页最近打开项目

    清除vs2008起始页最近打开项目 第一种:最简单的方式: 把以下内容保存为.bat批处理文件 @echo off@REG Delete HKCU\Software\Microsoft\VisualS ...

  8. Visual Studio 2010 更新NuGet Package Manager出错解决办法

    在Visual Studio 2010的扩展管理器中发现NuGet Package Manger有最新版本更新提示,选择更新安装提示以下错误信息: 2013/4/25 1:11:48 - Micros ...

  9. [leetcode]_Palindrome Number

    判断integer是否为回文串(负数全部不为回文串) 思路很直接,提取出integer中的每一位,一头一尾进行比较是否相同. 一次AC , 直接上代码: public boolean isPalind ...

  10. SQL服务器更改名称后

    SQL服务器更改名称后 编写人:CC阿爸 2014-6-15 在日常SQL 2005数据库的操作中,有时安装完成数据库后,再更名,造成部分SQL服务不能正常使用(在SQL2000 时,想都别想更名了) ...