#常见的算术运算符号

.+、-:加减
.*、/、%:乘、除、取余
.**:幂运算
.++、--:增加记减少
.!、&&、||:取反,并且,或
.<,<=,>,=> :比较符号:小于,小于等于,大于,大于等于
.==、!=、=:比较符号:相等,不相等
.<<,>> :向左移,向右移
.+=、-=:赋值运算,+=相当于i=i+,-+相当于i=i-

#常见的的算数运算命令

.(()):用于整数运算的常用运算符
.let:用于整数运算
.expr:也可用于整数运算,还有其他额外功能
.bc:计算机程序,适用整数记小数运算
.$[]:用于整数运算
.awk:可以用于整数运算,也可用于小数运算
.declare:定义变量值和属性

#1.(())双小括号

(())双小括号作用是进行数值运算和数字比较

#常见的操作

((a=i+))
i=$((i+))
echo $((+))

#应用

#使用(())进行数值计算
[root@game ~]# echo $((+)) #进行相加 [root@game ~]# echo $((-)) #进行相减 [root@game ~]# echo $((*)) #相乘 [root@game ~]# echo $((/)) #相除 [root@game ~]# echo $((**)) #次幂 [root@game ~]# echo $((%)) #取余 [root@game ~]# ((i=))
[root@game ~]# ((i=i*))
[root@game ~]# echo $i #适用echo输出 [root@game ~]# ((n=+-*/+))
[root@game ~]# echo $n [root@game ~]# echo $((*(+)/)) #计算1++..+100的和

#使用(())进行比较判断

[root@game ~]# echo $((<)) #如果结果为真就输出1

[root@game ~]# echo $((>)) #如果结果为假就输出0

[root@game ~]# echo $((==))

[root@game ~]# if ((>&&==));then echo yes;fi #使用if语句进行判断条件是否成立
yes

#(())运算后赋值给变量

[root@game ~]# mytest=
[root@game ~]# echo $((mytest+)) [root@game ~]# mytest=$((mytest+))
[root@game ~]# echo $mytest

#将命令写进脚本执行

[root@game test]# cat test1.sh
#!/bin/bash
a=
b=
echo "a-b=$(($a-$b))"
echo "a+b=$(($a+$b))"
echo "a*b=$(($a*$b))"
echo "a/b=$(($a/$b))"
echo "a%b=$(($a%$b))" #效果
[root@game test]# sh test1.sh
a-b=
a+b=
a*b=
a/b=
a%b=

#将脚本中定义的变量通过传参的方式来实现

[root@game test]# cat test1.sh
#!/bin/bash
a=$
b=$
echo "a-b=$(($a-$b))"
echo "a+b=$(($a+$b))"
echo "a*b=$(($a*$b))"
echo "a/b=$(($a/$b))"
echo "a%b=$(($a%$b))" #效果
[root@game test]# sh test1.sh
a-b=
a+b=
a*b=
a/b=
a%b=

#2.let命令

#语法格式:let 赋值表达式

#示例

[root@game ~]# let n=+
[root@game ~]# echo $n [root@game ~]# let a=/
[root@game ~]# echo $a

#实践

#判断如果登录失败次数等于3次,那么就打印登录失败,退出脚本
[root@game test]# cat login.sh
#!/bin/bash fail= while ((==))
do
read -p "please enter you username: " user
read -p "please enter you password: " password
if [[ $user = 'guoke' && $password = 'guoke123' ]];then
echo "login success"
exit
else
if [ $? -ne ];then
let fail=fail+ #如果登录失败次数就会加1
if [ $fail -ge ];then #当失败次数等于3就打印登录失败
echo "login fail"
exit
fi
fi
fi
done #效果
[root@game test]# sh login.sh
please enter you username:
please enter you password:
please enter you username:
please enter you password:
please enter you username:
please enter you password:
login fail [root@game test]# sh login.sh
please enter you username: guoke
please enter you password: guoke123
login success

#3.expr命令

#介绍

expr - evaluate expressions
expr - (evaluate(求值) expressions(表达式),可以用于整数运算,也可用于相关字符串、匹配的运算处理 #查看更多帮助
man expr

#示例1:用于基本的计算

[root@game ~]# expr  +  #相加

[root@game ~]# expr  -  #相减

[root@game ~]# expr  *  #相乘,相乘的时候需要使用\转移,不然报错
expr: syntax error
[root@game ~]# expr \* [root@game ~]# expr / #相除 #提示:expr后面的计算数字需要有一个空格

#示例2:配合变量进行计算,需要使用反引号将计算表达式括起来

[root@game ~]# n=
[root@game ~]# n=`expr $n + `
[root@game ~]# echo $n

#案例

#1.判断一个变量值或字符串是否为整数

#将一个变量或字符串和一个非0的整数相加,查看返回值是否为0,如果为0,说明为整数,否则就不是整数
[root@game ~]# a=
[root@game ~]# expr $a + &>/dev/null
[root@game ~]# echo $?
#返回0,证明a的值为整数 [root@game ~]# n=guoke
[root@game ~]# expr $n + &>/dev/null
[root@game ~]# echo $?
#返回非0,整数n的值不是整数

#4.bc命令

#介绍

bc是Linux下的计算器,还可以作为命令行计算工具使用

#查看帮助man bc
#语法:
bc [ -hlwsqv ] [long-options] [ file ... ] #提示:bc命令需要进行安装
yum install bc

#示例1:作为计算器来使用

#直接在命令输入bc,然后进行相关的加减乘除操作
[root@game ~]# bc
bc 1.06.
Copyright -, , , , , Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. + * - ^C
(interrupt) Exiting bc.

#示例2:在命令行下面实现运算功能

[root@game ~]# echo +|bc

[root@game ~]# echo 3.33+3.33|bc
6.66
[root@game ~]# echo *|bc [root@game ~]# echo "scale=3;333/45"|bc
7.400
[root@game ~]# echo "scale=2;333/45"|bc
7.40
提示:根据bc所具有的特殊性来看,如果是小数,则选择bc运算没有问题,若是整数场景,可用”(())“、let、expr等

#5.$[]命令

#使用$[]来计算运算

#应用

[root@game ~]# i=
[root@game ~]# i=$[i+]
[root@game ~]# echo $i [root@game ~]# echo $[+] [root@game ~]# echo $[-] [root@game ~]# echo $[*] [root@game ~]# echo $[/]

#6.declare命令

#使用declare来运算,同typeset

#示例1:定义整数变量,进行计算

[root@game ~]# declare -i a= b=
[root@game ~]# a=a+b
[root@game ~]# echo $a

#示例2:也可以作为变量输出

[root@game ~]# DIR_TEST=/tmp/test
[root@game ~]# declare |grep TEST
DIR_TEST=/tmp/test

#7.awk命令

awk是一种编程语言,可以用来处理数据和生成报告,也可以实现计算,适合小数和整数运算

#应用

#进行相加
[root@game ~]# echo "3.3 2.3" | awk '{print ($1+$2)}'
5.6
#进行相减
[root@game ~]# echo "3.3 2.3" | awk '{print ($1-$2)}' #相乘
[root@game ~]# echo "3.3 2.3" | awk '{print ($1*$2)}'
7.59
#先使用743-100再相除
[root@game ~]# echo "743 234" | awk '{print ($1-100)/$2}'
2.74786
#先使用743-100再相乘
[root@game ~]# echo "743 234" | awk '{print ($1-100)*$2}'

推荐掌握Linux shell中这7种运算命令的更多相关文章

  1. Linux shell中的一个问题 ${}带正则匹配的表达式

    目前在准备龙芯项目的PMON,在研究其编译过程的时候,看到一些make 语句,百思不得其解.后来在shell编程中看到一点资料,牵扯到Shell中的正则表达式.故记录下来,以备后来查阅. 问题: 在某 ...

  2. Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)

    case语句适用于需要进行多重分支的应用情况. case分支语句的格式如下: case $变量名 in 模式1) 命令序列1 ;; 模式2) 命令序列2        ;; *) 默认执行的命令序列  ...

  3. Linux Shell 中 > 和 >> 的异同点和应用场景

    Linux Shell 中 > 和 >> 的异同点和应用场景 > 和 >> 的异同点 举例说明(start.sh 为某个服务的启动脚本,start.log 为某服务 ...

  4. [转帖]Linux shell中2>&1的含义解释 (全网最全,看完就懂)

    Linux shell中2>&1的含义解释 (全网最全,看完就懂) https://blog.csdn.net/zhaominpro/article/details/82630528   ...

  5. linux shell 中的sleep命令

    开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

  6. 理解 Linux shell 中的一个方言:2>&1

    理解 Linux shell 中的一个方言:2>&1  2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如 ...

  7. linux shell 中的位置变量

    对于linux shell 中的位置变量,我一直以来都是吐不出来又咽不下去,每次看到都不懂,不懂了就去百度google,看完了又忘,真是慢性咽炎啊.现在认真想想也是,其实自己一直以来都没有好好学习过, ...

  8. Linux shell中的竖线(|)——…

    原文地址:Linux shell中的竖线(|)--管道符号作者:潇潇 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: command 1 | command ...

  9. [转载]Linux shell中的竖线(|)——管道符号

    原文地址:Linux shell中的竖线(|)--管道符号作者:潇潇 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: command 1 | command ...

随机推荐

  1. 面向对象的js编程 Call和apply方法

    JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别. 一.方法定义 1.call 方法 语法:call([thisObj[,arg1[, arg2[, [,.arg ...

  2. 第一个Mybatis

    第一个Mybatis 思路:搭建环境-->导入Mybatis-->编写代码-->测试 1.搭建环境 新建maven工程,配置xml文件 <?xml version=" ...

  3. 题解 UVA10457

    题目大意:另s = 路径上的最大边权减最小边权,求u到v上的一条路径,使其s最小,输出这个s. 很容易想到枚举最小边然后跑最小瓶颈路. so,如何跑最小瓶颈路? 利用Kruskal,因为树上两点路径唯 ...

  4. CF 1383B GameGame

    传送门 题目:给定长度为n的数组a,A和B轮流拿走一个数,开始时A和B拥有的v为0,A和B每次拿走一个数时,他的v = v^ ai,A和B都很聪明,问都按照最优的情况考虑,拿完所有数之后A和B的v的大 ...

  5. 使用Spring Boot开发者工具进行自动重启和页面自动刷新

    简介 大家可能都听说过开发Node.js应用时可以使用多种工具对开发者提供便利,如WebPack提供了开发者服务器来支持js应用动态更替,并在保存文件时自动刷新浏览器.Spring Boot也提供了相 ...

  6. HashMap 21问!!

    1:HashMap的数据结构? A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点.当链表长度超过8时,链表转换为红黑树. transient Node<K,V>\[\] t ...

  7. 【AI 算法评测】BERT 对 NLP 效果的改善,不负众望!

    AI 在各大领域的发展有目共睹,而作为人工智能皇冠上的明珠--自然语言处理却成果了了,大多实现或者以半成品的形式躺在实验室中,或者仅仅作为某个产品的辅助功能.而这一情况在 BERT 出现后出现了很大的 ...

  8. 《Java从入门到失业》第一章:计算机基础知识(二):计算机组成及基本原理

    1.2计算机组成及基本原理 1.2.1硬件组成 这里说的计算机主要指微型计算机,俗称电脑.一般我们见到的有台式机.笔记本等,另外智能手机.平板也算.有了一台计算机,我们就能做很多事情了,比如我在写这篇 ...

  9. Html5与CSS3(选择器)

    <!-- 作者:offline 时间:2018-03-21 描述:1.全选择器 *{属性1:属性值2:属性2:属性值2:...:} 2.元素(标签)选择器 标签名{属性1:属性值2:属性2:属性 ...

  10. Newbe.Claptrap 框架如何实现在多种框架之上运行?

    Newbe.Claptrap 框架如何实现在多种框架之上运行?最近整理了一下项目的术语表.今天就谈谈什么是 Claptrap Box. 特别感谢 kotone 为本文提供的校对建议! Newbe.Cl ...