文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Shell(())如何实现对整数进行数学运算

2023-06-09 11:26

关注

这篇文章主要介绍“Shell(())如何实现对整数进行数学运算”,在日常操作中,相信很多人在Shell(())如何实现对整数进行数学运算问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Shell(())如何实现对整数进行数学运算”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

双小括号 (( )) 是 Bash Shell 中专门用来进行整数运算的命令,它的效率很高,写法灵活,是企业运维中常用的运算命令。

注意:(( )) 只能进行整数运算,不能对小数(浮点数)或者字符串进行运算。后续讲到的 bc 命令可以用于小数运算。

Shell (( )) 的用法

双小括号 (( )) 的语法格式为:
((表达式))

通俗地讲,就是将数学运算表达式放在((和))之间。

表达式可以只有一个,也可以有多个,多个表达式之间以逗号,分隔。对于多个表达式的情况,以最后一个表达式的值作为整个 (( )) 命令的执行结果。

可以使用$获取 (( )) 命令的结果,这和使用$获得变量值是类似的。

表1:(( )) 的用法

运算操作符/运算命令说明
((a=10+66)
 ((b=a-15))
 ((c=a+b))
这种写法可以在计算完成后给变量赋值。以 ((b=a-15)) 为例,即将 a-15 的运算结果赋值给变量 c。
 
 注意,使用变量时不用加$前缀,(( )) 会自动解析变量名。
a=$((10+66)
 b=$((a-15))
 c=$((a+b))
可以在 (( )) 前面加上$符号获取 (( )) 命令的执行结果,也即获取整个表达式的值。以 c=$((a+b)) 为例,即将 a+b 这个表达式的运算结果赋值给变量 c。
 
 注意,类似 c=((a+b)) 这样的写法是错误的,不加$就不能取得表达式的结果。
((a>7 && b==c))(( )) 也可以进行逻辑运算,在 if 语句中常会使用逻辑运算。
echo $((a+10))需要立即输出表达式的运算结果时,可以在 (( )) 前面加$符号。
((a=3+5, b=a+10))对多个表达式同时进行计算。

在 (( )) 中使用变量无需加上$前缀,(( )) 会自动解析变量名,这使得代码更加简洁,也符合程序员的书写习惯。

Shell (( )) 实例演示

【实例1】利用 (( )) 进行简单的数值计算。

[jb51.net]$ echo $((1+1))2[jb51.net]$ echo $((6-3))3[jb51.net]$ i=5[jb51.net]$ ((i=i*2)) #可以简写为 ((i*=2))。[jb51.net]$ echo $i #使用 echo 输出变量结果时要加 $。10

【实例2】用 (( )) 进行稍微复杂一些的综合算术运算。

[jb51.net]$ ((a=1+2**3-4%3))[c.biancheng.net]$ echo $a8[jb51.net]$ b=$((1+2**3-4%3)) #运算后将结果赋值给变量,变量放在了括号的外面。[jb51.net]$ echo $b8[jb51.net]$ echo $((1+2**3-4%3)) #也可以直接将表达式的结果输出,注意不要丢掉 $ 符号。8[jb51.net]$ a=$((100*(100+1)/2)) #利用公式计算1+2+3+...+100的和。[jb51.net]$ echo $a5050[jb51.net]$ echo $((100*(100+1)/2)) #也可以直接输出表达式的结果。5050

【实例3】利用 (( )) 进行逻辑运算。

[jb51.net]$ echo $((3<8)) #3<8 的结果是成立的,因此,输出了 1,1 表示真1[jb51.net]$ echo $((8<3)) #8<3 的结果是不成立的,因此,输出了 0,0 表示假。0[jb51.net]$ echo $((8==8)) #判断是否相等。1[jb51.net]$ if ((8>7&&5==5))> then> echo yes> fiyes

最后是一个简单的 if 语句的格式,它的意思是,如果 8>7 成立,并且 5==5 成立,那么输出 yes。显然,这两个条件都是成立的,所以输出了 yes。

【实例4】利用 (( )) 进行自增(++)和自减(--)运算。

[jb51.net]$ a=10[jb51.net]$ echo $((a++)) #如果++在a的后面,那么在输出整个表达式时,会输出a的值,因为a为10,所以表达式的值为10。10[jb51.net]$ echo $a #执行上面的表达式后,因为有a++,因此a会自增1,因此输出a的值为11。11[jb51.net]$ a=11[jb51.net]$ echo $((a--)) #如果--在a的后面,那么在输出整个表达式时,会输出a的值,因为a为11,所以表达式的值的为11。11[jb51.net]$ echo $a #执行上面的表达式后,因为有a--,因此a会自动减1,因此a为10。10[jb51.net]$ a=10[jb51.net]$ echo $((--a)) #如果--在a的前面,那么在输出整个表达式时,先进行自增或自减计算,因为a为10,且要自减,所以表达式的值为9。9[jb51.net]$ echo $a #执行上面的表达式后,a自减1,因此a为9。9[jb51.net]$ echo $((++a)) #如果++在a的前面,输出整个表达式时,先进行自增或自减计算,因为a为9,且要自增1,所以输出10。10[jb51.net]$ echo $a #执行上面的表达式后,a自增1,因此a为10。10

本教程假设读者具备基本的编程能力,相信读者对于前自增(前自减)和后自增(后自减)的区别也非常清楚,这里就不再赘述,只进行简单的说明:

【实例5】利用 (( )) 同时对多个表达式进行计算。

[jb51.net]$ ((a=3+5, b=a+10)) #先计算第一个表达式,再计算第二个表达式[jb51.net]$ echo $a $b8 18[jb51.net]$ c=$((4+8, a+b)) #以最后一个表达式的结果作为整个(())命令的执行结果[jb51.net]$ echo $c26

到此,关于“Shell(())如何实现对整数进行数学运算”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯