设为首页 收藏本站
查看: 935|回复: 0

shell 之 算术运算

[复制链接]

尚未签到

发表于 2018-8-24 10:24:15 | 显示全部楼层 |阅读模式
整数运算(declare和let命令)
  declare命令 可以用declare –i命令定义整型变量。如果给整型变量赋一个字符串值,则bash将把变量赋值为0。可以对已定义的整型变量执行算术运算(如果变量未被定义为整型变量, 内置的let命令也允许算术操作。见本节let命令部分)。如果给整型变量赋一个浮点数值,则bash将报告语法错误。数字可以用不同基数的数字表示,如 二进制数,八进制数或十六进制数。
  范例14-6
  1   $ declare –i num
  2   $ num=hello
  $ echo $num
  0
  3   $ num=5 + 5
  bash: +: command not found
  4   $ num=5+5
  $ echo $num
  10
  5   $ num=4*6
  $ echo $num
  24
  6   $ num="4 * 6"
  $ echo $num
  24
  7   $ num=6.5
  bash: num: 6.5: syntax error in expression (remainder of expression
  is ".5")
  说明
  1. 带-i选项的declare命令创建一个整型变量num。
  2. 试着将字符串“hello”赋值给变量num,结果变量的值为0。
  3. 如果没有使用let命令,就必须把空白符放在引号中或者删掉。
  4. 删掉空白符后,运算正确执行。
  5. 执行乘法运算,并把结果赋给变量num。
  6. 把空白符放在引号中,则乘法运算可以执行,并阻止shell展开通配符(*)。
  7. 由于变量设置为整型,赋值时给了一个带小数点的数,导致bash报告语法错误。
  列出整型变量 只带一个-i参数的declare命令将列出所有已设置的整型变量及其值,如下所示:
  $ declare –i

  declare -ir EUID="15"    # effective user>
  declare -ir PPID="235"   # parent process>
  declare -ir UID="15"      # user>  用不同的基数表示数字 数字可以用不同基数形式表示,包括十进制(默认时基数为10),八进制(基数为8),十六进制(基数为16),另外,基数可以是2~36之间的任意整数。
  格式
  variable=base#number-in-that-base
  范例14-7
  n=2#101      # Base is 2; number 101 is in base 2
  范例14-8
  (命令行)
  1 $ declare -i x=017
  $ echo $x
  15
  2 $ x=2#101
  $ echo $x
  5
  3 $ x=8#17
  $ echo $x
  15
  4 $ x=16#b
  $ echo $x
  11
  说明
  1. declare命令用来为整型变量x赋一个八进制的值017。八进制数字必须以一个0开头。本例中输出八进制数017的十进制值:15。
  2. 变量x被赋值为二进制数101,2代表基数,用#隔开,后面是二进制的数值101。x的十进制值为5。
  3. 变量x赋值为八进制值017,x的十进制值为15。
  4. 变量x赋值为十六进制值b,x的十进制值为11。
  let命令 let命令是bash shell内置命令,用来执行整型算术运算和数值表达式测试。可用命令help let查看当前bash版本支持的let操作符,参见14.5.2一节中的表14-4。
  范例14-9
  (命令行)
  1   $ i=5 or let i=5
  2   $ let i=i+1
  $ echo $i
  6
  3   $ let "i = i + 2"
  $ echo $i
  8
  4   $ let "i+=1"
  $ echo $i
  9
  5   $ i=3
  6   $ (( i+=4))
  $ echo $i
  7
  7   $ (( i=i-2 ))
  $ echo $i
  5
  说明
  1. 变量i被赋值为5。
  2. let命令给变量i加1。在执行算术运算时,不需要用美元符来展开变量。
  3. 如果参数包括空白符,则需要使用引号。
  4. 简写的操作符+=,用来给变量i加1。
  5. 变量i被赋值为5。
  6. 双括号可以用来代替let命令⑤。变量i的值加4。
  7. i的值减2。也可以写作i-=2。
14.3.2 浮点数运算
  bash只支持整型运算,但可以使用bc,awk和nawk工具来处理更复杂的运算。
  范例14-10
  (命令行)
  1   $ n=`echo "scale=3; 13 / 2" | bc`
  $ echo $n
  6.500
  2   product=`gawk -v x=2.45 -v y=3.123 'BEGIN{printf "%.2f\n",x*y}'`
  $ echo $product
  7.65
  说明
  1. echo命令的输出通过管道传送给bc程序。变量scale赋值为3,表示小数点后的有效位数为3。计算13除以2的值,整个管道用反引号括起来。第二行中将执行命令替换,输出的值赋给变量n。
  2. 通过命令行传递参数列表,gawk从该列表中获取参数值:x=2.45,y=3.123。乘法运算完成后,printf函数格式化并显示运算结果,保留小数点后两位数,并将输出赋给变量product。
  转自: http://book.csdn.net/bookfiles/382/10038214294.shtml


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-555861-1-1.html 上篇帖子: 细读shell-6 下篇帖子: 细读shell-3
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表