多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # **一、变量数值计算符号和命令** ## **1. 常见算数运算符** | 符号 | 说明 | | --- | --- | | +、- |加号、减号 | | *、/、% | 乘法、触法、取余 | | ** | 冥运算 | | ++、-- | 增减、减少 | |`!、&&、|| `| 逻辑非(取反)、逻辑与(and)、逻辑或(or) | | <、<=、>、>= | 比较符号(小于、大于) | | ==、!=、= | 比较符号(相等、不相等、相当于)| | <<、>> | 向左移位、向右移位| |`~、|、&、^`| 按位取反、异或、与、或| | =、+=、-=、*=、/+、%= | 赋值运算(a+=1相当于a=a+1)| ## **2. 常见算数运算命令** | 符号 | 说明 | | --- | --- | | (()) | 用于整数运算的常用运算符,效率很高| | let | 用于整数运算,类似于"(())"| | expr | 可用于整数运算,还有很多其他功能| | bc | linux下的计算器程序,适合整数及小数| | $[] | 用于整数运算| | awk | awk既可用于整数,也可以用于小数运算| | declare | 定义变量值和属性,-i参数可以用于定义整形变量,做运算| # **二、计算实践** ## **1. 双小括号** ### 1) 常规用法 | 符号 | 说明 | | --- | --- | | ((i=i++)) |先赋值后运算| | ((i=++i)) |先运算后赋值| | i=$((i+1)) |运算后赋值给变量i| | ((a>7&&b<5)) |进行比较操作,还可以做条件判断| | echo $((2+1)) |世界输出表达式的结果| > **++、-- 运算的记忆方法:** >>i=i++表示先对i赋值,然后进行自加运算,即实际的i值比输出的i值大 >>i=++i表示先进行自加运算,在对i赋值,即实际的i和输出的i一样 ### 2) `i++和++i测试` * i=6;echo $((i++));echo $i ```shell 6 7 ``` * i=6;echo $((++i));echo $i ``` 7 7 ``` ## **2.其他计算命令** ### 1) let 赋值表达式 `let i=i+2等同于((i=i+2))` ### 2) bc计算命令 bc是linux下的计算机,常常用配合管道进行计算,可以进行小数运算 ``` echo "1+9"|bc i=5;i=`echo $i+6|bc` ``` ### 3) awk做算数运算 可以进行小数、整数的运算,很好用 `echo "7.7 9.8"|awk '{print ($1+$2),($1*$2)}'` > 17.5 75.46 ### 4) $[] 做运算 `echo $[4+2] $[4*2] $[4**2] ` > 6 8 16 # **三、案例** ## **1.实现输出1+2+3..+10=55的计算和输出** * 方法1: ``` echo `seq -s "+" 10`=`seq -s + 10|bc` ``` > 1+2+3+4+5+6+7+8+9+10=55 * 方法2: ``` echo `echo {1..10}|tr " " "+"`=`echo {1..10}|tr " " "+"|bc` ``` > 1+2+3+4+5+6+7+8+9+10=55 * 方法3:expr ``` echo `seq -s + 10`=`seq -s " + " 10|xargs expr` ``` > 1+2+3+4+5+6+7+8+9+10=55 * 方法4:(()) ``` echo `seq -s + 10`=$((`seq -s + 10`)) ``` > 1+2+3+4+5+6+7+8+9+10=55 ## **2.read命令读取参数** ### 1) read命令基础 * 语法:read [参数] [变量名] -p 设置提示信息 -t 设置输入等待时间(秒) `read -t 10 -p "input tow num:" a b ` > input tow num:1 2 > 设置10秒超时,提示语为** ### 2) 计算脚本演示 * cat /server/scripts/t.sh ``` #!/bin/bash read -p "num1:" a read -p "num2:" 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))" ``` > 做到允许脚本后,分别提示输入两个字符串的功能 ### 3) 脚本增加判断整数语句 * cat /server/scripts/t.sh ``` #!/bin/bash #no.1 read -p "num1:" a expr $a + 0 &>/dev/null [ $? -ne 0 ] && { echo "pls int" exit 1 } #no.2 read -p "num2:" b expr $b + 0 &>/dev/null [ $? -ne 0 ] && { echo "pls int" exit 2 } #no.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))" ``` > 达到每输入一个字符串,验证是否为整数,不是整数则提示并退出,两个都是整数后,则进行计算