您的位置:首页 > 运维架构 > Shell

[笔记]shell中算术扩展基础

2015-12-28 15:16 281 查看
算术扩展: $((算术式))
使用外部程式:expr 算术式
使用$[]: $[算术式]
使用内置命令: declare -i 变量=算术式
使用内置命令: let 算术式
注意:算术式由操作数和运算符组成
若算术式中变量不存在或为空,则该变量值为0
算术式中若包含变量或变量扩展,算术运算之前变量会替换,扩展会展开
若算术式中数字以0开头则视为八进制,0X开头视为十六进制
不同进制数字可用 "进制#数字" 来表示
算术式中有变量时该变量前最好不要加$,以免该变量不存在造成语法错误

赋值运算:%= , <<= (位左移), >>= (位右移), &= (位AND), ^= (位互斥), |= (位OR)

使用expr做算术运算:(注意:算术式'中含有bash shell特殊字符时需要用\转义)
a=`expr Arg1 \| Arg2` :Arg1存在非空非0,则传回Arg1,否则传回Arg2
a=`ecpr Arg1 \& Arg2` :Arg1和Arg2都存在非空非0,则传回Arg1,否则传回0
算术式中运算符和操作数之间必须有有空格隔开(与declare相反)
expr的本来作用是在“标准输出”显示表达式的值。因其为外部程序而与shell无关,可跨平台
let 和 expr 的运算是整数运算,不包括浮点预算。

使用declare做算术运算:
注:使用declare -i设定变量
算术式中运算符和操作数之间不能有空格
特殊符号不必使用\转义,如:*乘法,**乘方(expr中无乘方)
算术式中可以包含其他变量且变量前不需加$
let与declare用法大致相同

注意:let必须是完整的算术表达式,即有等号两边
(())、expr 可以只有等号右边的计算,由$((...))、$(expr ...)、`expr ...` 查看返回结果

^_^

本文出自 “junight” 博客,请务必保留此出处http://junight.blog.51cto.com/10828785/1729166
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: