shell的算术运算
变量的数值计算方法大致有双括号 (()), expr, bc, $[ ]
例子1
注意:2**3表示2的3次方,a++表示先输出a自身的值,然后进行++的运算; --a表示先进行--的运算,然后再输出a自身的值
例子3:计算连续数之和的公式 n*(n+1)/2
注意:
上面的所有操作只能是用整数,小数是不能成功运算的
例子3:关于双括号中空格的问题
例4,变量运算,(())中直接写变量名
#!/bin/bash
read num1 num2 num3
while [ $num1 -lt $num3 ]
doecho $num1num1=$((num1+num2))
done
二. bc命令的用法,可以用于小数
可直接输入bc命令进入交互界面,进行操作;当然也可以在命令行中进行操作,因为bc支持科学计算,所有功能很强大,只要是正确的计算表达式,bc就能处理。
scale可以用来设置保留小数点的位置,scale=3就表示保留三位小数;
obase可以把十进制数转变为其他进制的值。
例子1:
echo 3.5+5 | bc 输出为8.5
echo "obase=2;8" | bc 输出为1000 #表示为10进制的8转换成2进制的值
echo "obase=16;20" | bc #表示十进制20转成16进制的值
echo "scale=3; 5.23/3.13" | bc #保留三位小数值
例子2
seq -s "+" 10 #输出为1+2+3+4+5+6+7+8+9+10
seq -s "+" 10 | bc #输出为55
说明:seq -s "+”10,它表示以“+”为分隔符,来按顺序生成1-10;
有关变量的小数计算还是用awk好,比如
x=3.4
y=4.6
echo $x $y |awk '{print $1+$2}
三. expr (evaluate expressions)
expr 命令一般用于整数值,但也可以用于字符串,用来求表达式的值,同时expr也是一个手工命令行计算器
1. expr基本算数运算
expr $[$a+$b],使用中括号的形式进行运算的方式值得推荐
例如:expr $[2+3] 输出为5
注意:其实这里expr就是一个输出的功能,数值的计算已经由 $[...] 完成,所以等价于echo $[2+3]也可以直接输出计算结果
2. expr 匹配字符用法,expr "..." : "..."
例如,expr "test.txt" : ".*\.txt" 输出为非0
如果结果非0,判断为真,说明字符匹配;如果输出为0,表示不匹配
脚本中可以做一个小优化
expr "text.pub" : ".*\.pub" && echo 1 || echo 0
3. 用expr判断变量是否整数
expr $a + 0 > /dev/null 2>&1
[ $? -eq 0 ] && echo int || echo chars
如果想连续判断,可以把上面语句放在while true 循环中
4. 通过expr计算字符串长度
chars=`seq -s " " 100`
echo ${#chars} 或者 echo $(expr length "$chars") 都可以得到字符串长度
注意:两种把命令执行结果赋值给变量的方式为 `....` 和 $(....)
拓展expr的用法
# seq 1 10,输出是1 2 3 4 5 6 7 8 9 10
默认分隔符是空格,可以用-s 指定分隔符,如下
test3=`seq -s "+" 1 10`;echo $test3 输出为1+2+3+4+5+6+7+8+9+10
expr $[$test3]可计算其值,结果为55
四. read命令及其实践
shell变量除了可以直接赋值或脚本传参外,还可以使用read命令从标准输入中获得
格式为:read [参数] [变量名]
常用参数:
-p:设置提示信息
-t:设置输入超时,默认单位为秒
例子2,有如下脚本,可执行参数值不为整数的情况
#!/bin/bash
while true
do
read -t 10 -p "please input 2 number:" a b
expr $a + 0 > /dev/null 2>&1
[ $? -ne 0 ] && continue #continue表示不执行下面的代码,转而进入下一轮循环
expr $b + 0 > /dev/null 2>&1
[ $? -ne 0 ] && continue||break #break表示立马跳出所有循环
done
转载于:https://www.cnblogs.com/regit/p/8058721.html
shell的算术运算相关推荐
- shell变量算术运算
shell变量算术运算 ((i=j+k)) 等价于 i=expr $j + $k ((i=j−k)) 等价于 i=expr $j -$k ((i=j∗k)) 等价于 i=expr $j \*$k (( ...
- linux脚本乘法运算符,shell算术运算
Bash shell 的算术运算有四种方式: 1:使用 expr 外部程式 加法 r=`expr 4 + 5` echo $r 注意! '4' '+' '5' 这三者之间要有空白 r=`expr 4 ...
- Linux Shell 算术运算
米扑博客 总结了 Bash shell 的算术运算有四种方式: 1.使用 expr 外部程式 加法 r=`expr 4 + 5` echo $r 注意! '4' '+' '5' 这三者之间要有空格 r ...
- linux运算_LinuxShell算术运算
Bash shell 的算术运算有四种方式: 1:使用 expr 外部程式 加法 r=`expr 4 + 5` echo $r 注意! '4' '+' '5' 这三者之间要有空白 r=`expr 4 ...
- Shell 基础介绍 [1]
本文目录 1.什么是Shell? 2.脚本语言类型 3.其他常用的脚本语句种类 4.Shell脚本的建立和执行 5.Shell 变量类型 6.普通变量 7.Shell 特殊重要变量 8.Shell进程 ...
- 【Shell 编程基础第一部分】Shell脚本HelloShell及简单的Shell基础
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/shell/759.html ☞ 点击订阅 ☜ ...
- Linux shell脚本1
什么是shell shell是一个命令解释器,提供用户和机器之间的交互 支持特定语法,比如逻辑判断.循环 每个用户都可以有自己特定的shell 还有其他zsh.ksh等 CentOS7 默认的shel ...
- SHELL编程之变量定义
SHELL编程 学习前奏 1. 文件处理工具 1.1 grep工具 1.2 cut工具 1.3 sort工具 1.4 uniq工具 1.5 tee工具 1.6 paste工具 1.7 tr工具 小试牛 ...
- SHELL编程(一)
SHELL编程 1. 文件处理工具 1.1 grep工具 1.2 cut工具 1.3 sort工具 1.4 uniq工具 1.5 tee工具 1.6 paste工具 1.7 tr工具 2. 编程语言分 ...
最新文章
- 面试官:因为这个语言,我淘汰了90%的人!
- linux环境双网卡主机路由配置
- python如何判断两个数组完全相等?
- 怎样实现关闭connection时自动关闭Statement和ResultSet
- ECCV 2018 | 美图云联合中科院提出基于交互感知注意力机制神经网络的行为分类技术...
- 博通2021财年第三季度营收67.8亿美元,半导体业务营收50亿美元
- org.springframework.boot:spring boot maven plugin丢失---SpringCloud Alibaba_若依微服务框架改造_--工作笔记012
- 苹果怒封Google、FB:私下购买用户隐私被制裁,数万员工受牵连
- 東京タワー初めてphoto
- Python:下载安装包
- 赤兔oracle恢复软件 收费,赤兔Oracle数据库恢复软件 v11.6
- mysql asc_mysql – 在字符串列上使用asc和desc的索引
- rabbit原理及项目应用
- Elasticsearch 最佳运维实践总结
- Dissect HTTP3
- 几何分布的众数为什么是1
- 推荐几个英语学习网站
- Flex Builder 3 如何弹出“打开文件对话框”,限制选择文件类型
- Activity中getWindow().setBackground()与getWindw().getDecorView().setBackground()的区别
- python3.8与pyinstaller_pyinstaller 3.5 在python 3.8 环境下出现不兼容的问题