Bash脚本编程之算术运算
2019-12-20 16:02:51来源:博客园 阅读 ()
Bash脚本编程之算术运算
简介
Bash所支持的算术运算和C语言是一样的,这里指的是操作符(operator)以及它们的优先级(precedence)、结合性(associativity)和值,详见Shell Arithmetic (Bash Reference Manual)。
注意:如果乘号“*”在某些场景中失效,有可能是它被解释成了通配符,可尝试对其转义。
1+2=3
在上面这个简单的算术运算中,1和2叫做操作数/运算元(operand),“+”加号叫做操作符/运算符(operator),1+2整个叫做算术表达式(arithmetic expression),对于算术表达式的求值过程叫做evaluate。
在bash脚本编程中,变量的默认类型是字符串型,因此是无法直接执行算术运算的。
[root@c7-server ~]# num1=3 [root@c7-server ~]# num2=4 [root@c7-server ~]# echo $num1+$num2 3+4
即便是使用declare命令显式声明变量为整型,也是不行的。
[root@c7-server ~]# declare -i num1=3 [root@c7-server ~]# declare -i num2=4 [root@c7-server ~]# echo $num1+$num2 3+4
在bash中,想要支持算术运算有以下四种方式:
方法一:内置命令let
let arg [arg ...]
每个arg,都是一个算术表达式。
[root@c7-server ~]# num1=5 [root@c7-server ~]# num2=10 [root@c7-server ~]# let sum=$num1+$num2 [root@c7-server ~]# echo $sum 15
一般都会使用一个变量来存储算术表达式的结果,let命令本身是不会将算术表达式的结果返回的。
[root@c7-server ~]# let $num1+$num2
[root@c7-server ~]#
方法二:$[ARITHMETIC EXPRESSION]
这种方式,马哥有提到,但是在bash的手册中似乎没找到。应该是一种非官方的方式,慎用。
[root@c7-server ~]# sum=$[$num1+$num2] [root@c7-server ~]# echo $sum 15
方法三:Bash算术展开
这个是bash自身支持的shell展开中的一种。Arithmetic Expansion (Bash Reference Manual)
$(( ARITHMETIC EXPRESSION ))
[root@c7-server ~]# sum=$(($num1+$num2)) [root@c7-server ~]# echo $sum 15
方法四:外部命令expr
需要使用命令替换的方式来赋值。
[root@c7-server ~]# expr $num1 + $num2 15 [root@c7-server ~]# sum=$(expr $num1 + $num2) [root@c7-server ~]# echo $sum 15
操作符的两边需要有空格,不然操作符无法被正确解释。
[root@c7-server ~]# expr $num1+$num2 5+10
总结
内置命令let和shell展开中的算术展开是bash所自带的算术运算方式,比较推荐使用这类方式;外部命令expr是来自于CentOS所提供的程序包coreutils;最后的$[...]没有找到其来源,可以不使用它。
在本实例中只展示了简单的加法运算,在实际使用当中会比较复杂,建议用户可使用一种方式(如算术展开)来熟练即可。
原文链接:https://www.cnblogs.com/alongdidi/p/bash_arithmetic_expression.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Linux系统如何设置开机自动运行脚本? 2020-06-11
- Linux指令和shell脚本 2020-06-11
- Ubuntu下用脚本执行sql语句(sqlite) 2020-05-29
- 如何将目录下的脚本一次性全部执行 2020-05-28
- Bash Shell基础笔记 2020-05-26
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash