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. 在centos上安装mysql5.7的三种方法

    带OS信息的是已编译的二进制文件,不带OS信息的是源码包 mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz 二进制包 mysql-5.5.51.tar.gz 源码包 ...

  2. 4种kill某个用户所有进程的方法

    在linux系统管理中,我们有时候需要kill掉某个用户的所有进程,初学者一般先查询出用户的所有pid,然后一条条kill掉,或者写好一个脚本,实际上方法都有现成的,这边有4种方法,我们以kill用户 ...

  3. windows server 2008 r2 搭建文件服务器

    目的需求:在测试环境下模拟公司现状需求,利用windows server 搭建文件服务器 工具必备:(1)vmware workstation,(2)windows server 2008 r2.is ...

  4. poj3349 哈希

    这题目写了一上午,一直错,然后自己测试数据还都对.为什么呢,为什么呢,后来我才发现代码里有一行free(tmp)...在55行那里... #include <stdio.h> #inclu ...

  5. sed的惯常用法

    1:注释掉某一行这个经常会遇到的,把配置文件里某一行注释掉.让他不起作用.sed -i -e ’121 s/^/#/’ /usr/local/apache2/conf/httpd.conf上面一行命令 ...

  6. projecteuler Smallest multiple

    2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any rema ...

  7. 十、Struts2结果集

      十.Struts2结果集                         1.Struts.xml配置文件 result元素:指定动作类的动作方法执行完后的结果视图. 属性: name:字符串,与 ...

  8. php实现在线下载程序安装包功能

    在线下载程序安装包可以很方便在服务器端下载各种程序安装包(Discuz!.phpwind.Dedecms.WordPress....等一些常用程序)并存储在服务器,大大减少站长上传程序安装包时间.默认 ...

  9. c#操作xml增删改查

    1.首先新建一个xml文件(Root是我写上的) 2. 3.直接上代码,更直观 (1)初始化xml /// <summary> /// 初始化xml /// </summary> ...

  10. JQuery 的几个有用的技巧

    JQuery代码 /* 新窗口打开链接:JQuery filter attr * 禁止鼠标弹出右键菜单:DOM contextmenu * 回到页面顶端:DOM scrollTo * 动态更换Css样 ...