wdx1992828 发表于 2018-8-28 11:43:55

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

  算术扩展: $((算术式))
  使用外部程式: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 ...` 查看返回结果
  ^_^

页: [1]
查看完整版本: [笔记]shell中算术扩展基础