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. linux tcp状态学习

    参考: http://huoding.com/2013/12/31/316 http://www.cnblogs.com/sunxucool/p/3449068.html http://maoyida ...

  2. CSS3 图片悬浮缩放效果

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  3. RocketMQ学习记录

    RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 1.能够保证严格的消息顺序 2.提供丰富的消息拉取模式 3.高效的订阅者水平扩展能力 4.实时的消息订阅机制 5.亿级消息堆积能力 ...

  4. vs C#数据库导入EXCLE

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  5. webview 中 svg的坑

    在这里不会详细介绍如何绘制svg图片,是讲一个很小的bug,看图 在这张图中,上面带有纹理和弧度的图片,原本是直接切了一张png的图片,但是由于是在app的登录注册的首页,那么这个35k的图片就会非常 ...

  6. Oracle自用脚本(持续更新)

    --查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, ...

  7. jquery.unobtrusive-ajax.js源码阅读

    /*! ** Unobtrusive Ajax support library for jQuery ** Copyright (C) Microsoft Corporation. All right ...

  8. 6.python字符串-内置方法列举

    所谓内置方法,就是凡是字符串都能用的方法,这个方法在创建字符串的类中,下面是总结: 首先,我们要学习一个获取帮助的内置函数 help(对象) ,对象可以是一个我们创建出来的,也可以是创建对象的那个类, ...

  9. python爬取网站数据

    开学前接了一个任务,内容是从网上爬取特定属性的数据.正好之前学了python,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...

  10. JavaScrip拖动动画中的常见BUG

    经常我们在用JS辛苦写完一个拖动效果之后 ,发现有各种无法用JS解决的BUG.比如拖动时DOM元素中的内容会变蓝,鼠标的指示会变为一个小+号,或disable的样式,通常这种情况一发生,我们的拖动效果 ...