Linux shell中这7种运算命令值得掌握!
时间:2022-07-24
本文章向大家介绍Linux shell中这7种运算命令值得掌握!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#常见的算术运算符号
1.+、-:加减
2.*、/、%:乘、除、取余
3.**:幂运算
4.++、--:增加 减少
5.!、&&、||:取反,并且,或
6.<,<=,>,=> :比较符号:小于,小于等于,大于,大于等于
7.==、!=、=:比较符号:相等,不相等
8.<<,>> :向左移,向右移
9.+=、-=:赋值运算,+=相当于i=i+1,-+相当于i=i-1
#常见的运算命令概览
1.(()):用于整数运算的常用运算符
2.let:用于整数运算
3.expr:也可用于整数运算,还有其他额外功能
4.bc:计算机程序,适用整数记小数运算
5.$[]:用于整数运算
6.awk:可以用于整数运算,也可用于小数运算
7.declare:定义变量值和属性
#详解 1.(())双小括号 #介绍:(())双小括号作用是进行数值运算和数字比较
#常见的操作
((a=i+1))
i=$((i+1))
echo $((1+4))
#应用
#使用(())进行数值计算
[root@game ~]# echo $((10+5)) #进行相加
15
[root@game ~]# echo $((10-5)) #进行相减
5
[root@game ~]# echo $((10*5)) #相乘
50
[root@game ~]# echo $((10/5)) #相除
2
[root@game ~]# echo $((10**5)) #次幂
100000
[root@game ~]# echo $((10%5)) #取余
0
[root@game ~]# ((i=10))
[root@game ~]# ((i=i*5))
[root@game ~]# echo $i #适用echo输出
50
[root@game ~]# ((n=10+2-5*2/4+5))
[root@game ~]# echo $n
15
[root@game ~]# echo $((100*(100+1)/2)) #计算1+2+3..+100的和
5050
#使用(())进行数值比较
[root@game ~]# echo $((4<9)) #如果结果为真就输出1
1
[root@game ~]# echo $((4>9)) #如果结果为假就输出0
0
[root@game ~]# echo $((4==4))
1
[root@game ~]# if ((8>7&&6==6));then echo yes;fi
#使用if语句进行判断条件是否成立
yes
#(())运算后赋值给变量
[root@game ~]# mytest=66
[root@game ~]# echo $((mytest+34))
100
[root@game ~]# mytest=$((mytest+34))
[root@game ~]# echo $mytest
100
#将命令写进脚本执行
[root@game test]# cat test1.sh
#!/bin/bash
a=6
b=3
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=3
a+b=9
a*b=18
a/b=2
a%b=0
#将脚本中定义的变量通过传参的方式来实现
[root@game test]# cat test1.sh
#!/bin/bash
a=$1
b=$2
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 8 4
a-b=4
a+b=12
a*b=32
a/b=2
a%b=0
2.let命令
#语法格式:let 赋值表达式
#简单示例
[root@game ~]# let n=10+3
[root@game ~]# echo $n
13
[root@game ~]# let a=20/4
[root@game ~]# echo $a
5
#实践
#判断如果登录失败次数等于3次,那么就打印登录失败,退出脚本
[root@game test]# cat login.sh
#!/bin/bash
fail=0
while ((1==1))
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 1
else
if [ $? -ne 0 ];then
let fail=fail+1 #如果登录失败次数就会加1
if [ $fail -ge 3 ];then #当失败次数等于3就打印登录失败
echo "login fail"
exit 1
fi
fi
fi
done
#效果
[root@game test]# sh login.sh
please enter you username: 1
please enter you password: 1
please enter you username: 2
please enter you password: 2
please enter you username: 3
please enter you password: 3
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
#用于基本的计算
[root@game ~]# expr 10 + 10 #相加
20
[root@game ~]# expr 10 - 10 #相减
0
[root@game ~]# expr 10 * 10 #相乘,相乘的时候需要使用转移,不然报错
expr: syntax error
[root@game ~]# expr 10 * 10
100
[root@game ~]# expr 10 / 10 #相除
1
#提示:expr后面的计算数字需要有一个空格
#配合变量进行计算,需要使用反引号将计算表达式括起来
[root@game ~]# n=10
[root@game ~]# n=`expr $n + 100`
[root@game ~]# echo $n
110
#案例:判断一个变量值或字符串是否为整数
#将一个变量或字符串和一个非0的整数相加
查看返回值是否为0,如果为0,说明为整数,否则就不是整数
[root@game ~]# a=10
[root@game ~]# expr $a + 10 &>/dev/null
[root@game ~]# echo $?
0 #返回0,证明a的值为整数
[root@game ~]# n=guoke
[root@game ~]# expr $n + 10 &>/dev/null
[root@game ~]# echo $?
2 #返回非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.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
10+200
210
2*2
4
333-22
311
^C
(interrupt) Exiting bc.
#示例2:在命令行下面实现运算功能
[root@game ~]# echo 333+333|bc
666
[root@game ~]# echo 3.33+3.33|bc
6.66
[root@game ~]# echo 33*33|bc
1089
[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=10
[root@game ~]# i=$[i+23]
[root@game ~]# echo $i
33
[root@game ~]# echo $[100+100]
200
[root@game ~]# echo $[100-100]
0
[root@game ~]# echo $[100*100]
10000
[root@game ~]# echo $[100/100]
1
6.declare命令
#使用declare来运算,同typeset
#示例1:定义整数变量,进行计算
[root@game ~]# declare -i a=10 b=10
[root@game ~]# a=a+b
[root@game ~]# echo $a
20
#示例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)}'
1
#相乘
[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}'
150462
- Android6.0源码开发之修改默认音量default及max和min
- Android源码开发之添加/删除系统应用
- 按键事件处理
- Android6.0锁屏源码分析之界面布局分析
- Android6.0源码分析之menu键弹出popupwindow菜单流程分析
- Android中初步自定义view
- Android中View研究自学之路 Android6.0源码分析之View(一)Android6.0源码分析之View(二)
- Android蓝牙配对弹出框过程分析 Android蓝牙配对弹出框过程分析
- Android6.0之修改或者查看系统属性值
- linux下Android7.0多用户编译问题
- 带你解锁蓝牙skill(0)
- WiFiAp探究实录--功能实现与源码分析
- Android7.1.1系统设置默认值大全
- Androidstudio编译c/c++jni方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ThinkPHP5.0框架实现切换数据库的方法分析
- php微信公众号开发之微信企业付款给个人
- tp5框架的增删改查操作示例
- PHP使用函数用法详解
- 微信企业转账之入口类分装php代码
- 多个Laravel项目怎么共用migrations详解
- layui数据表格自定义每页条数limit设置
- Laravel 集成微信用户登录和绑定的实现
- PHP实现微信对账单处理
- Laravel5.1框架路由分组用法实例分析
- PHP的HTTP客户端Guzzle简单使用方法分析
- laravel 框架实现无限级分类的方法示例
- 详解Laravel5.6通过路由进行API版本控制的简单方法
- php+layui数据表格实现数据分页渲染代码
- thinkPHP框架乐观锁和悲观锁实例分析