计算1-数值计算命令和案例
一、变量数值计算符号和命令
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
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))"
达到每输入一个字符串,验证是否为整数,不是整数则提示并退出,两个都是整数后,则进行计算
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?