shell变量算术运算

((i=j+k)) 等价于 i=expr $j + $k
((i=j−k)) 等价于 i=expr $j -$k
((i=j∗k)) 等价于 i=expr $j \*$k
((i=j/k)) 等价于 i=expr $j /$k

Let expressions 执行一个或多个表达式。表达式中的变量前不必有$.如果表达式中包含了空格或其他特殊字符,则必须引起来。

例:let “I = I + 1” 或 let i=i+1

算术运算符指的是可以在程序中实现加、减、乘、除等数学运算的运算符。Shell中常用的数学运算符如下所示。

— +:对两个变量做加法。

— -:对两个变量做减法。

— *:对两个变量做乘法。

— /:对两个变量做除法。

— **:对两个变量做幂运算。

— %:取模运算,第一个变量除以第二个变量求余数。

— +=:加等于,在自身基础上加第二个变量。

— -=:减等于,在第一个变量的基础上减去第二个变量。

— *=:乘等于,在第一个变量的基础上乘以第二个变量。

— /=:除等于,在第一个变量的基础上除以第二个变量。

— %=:取模赋值,第一个变量对第二个变量取模运算,再赋值给第一个变量。

在使用这些运算符时,需要注意到运算顺序的问题。例如输入下面的命令,输出1+2的结果。

echo 1+2

Shell并没有输出结果3,而是输出了1+2。在shell中有三种方法可以更改运算顺序。

— 用expr改变运算顺序。可以用echo expr 1 +2来输出1+2的结果,用expr表示后面的表达式为一个数学运算。需要注意的是,`并不是一个单引号,而是“Tab”键上面的那个符号。

— 用let指示数学运算。可以先将运算的结果赋值给变量b,运算命令是b=let 1 + 2。然后用echo$b来输出b的值。如果没有let,则会输出1+2。

— 用[]表示数学运算。将一个数学运算写到

[]符号的中括号中,中括号中的内容将先进行数学运算。例如命令echo$[1+2],将输出结果3。

下面是一个shell程序实例,实现数学函数S=3(xy)+4x2+5y+6的运算。在程序中以位置变量的方式输入x与y的值。程序的编写步骤如下所示。

在主菜单中打开一个终端。在终端中输入“vim”命令打开VIM。

在VIM中按“i”键进入插入模式,然后输入下面的代码。

代码4-2 数学运算实例:\源文件\04\4.4.sh

!/bin/bash

4.4.sh

s=0 #定义一个求和变量,初值为0。

t=expr$1**$2 #用expr改变运算顺序,求x的y次方。

t=$[t*3] #t乘以3。

s=$[s+t] #结果相加。

t=[

1**2] #求x的平方。

t=$[t*4] #结果乘以4。

s=$[s+t] #结果相加。

t=expr$2*5 #求5y的值。

s=$[s+t] #结果相加。

s=$[s+6] #结果加上6。

echo$s #输出结果。

echo$((a%b)) #取余

在这个程序中,需要注意算术运算的写法。如果没有expr或$[]更改运算顺序,则会将运算式以字符串的形式赋值,而不会赋值运算结果。

按“Esc”键返回到普通模式。然后输入“:w 4.4.sh”保存文件。

输入“:q”命令,按“Enter”键退出VIM。

在终端中,输入下面的命令对4.4.sh文件添加可执行权限。

chmod +x 4.4.sh

输入下面的命令运行程序。在命令中需要输入两个参数。

./4.4.sh 2 4

程序会完成S=3(xy)+4x2+5y+6的数学运算并输出结果,结果如下所示。
90

shell变量算术运算相关推荐

  1. Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)

    shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...

  2. linux特殊系统变量,linux环境几个特殊的shell变量

    特殊的shell变量: $0  获取当前执行的shell脚本的文件名 $n  获取当前执行的shell脚本的第n个参数值,n=1..9 $*  获取当前shell的所有参数 "$1 $2 $ ...

  3. linux脚本查看变量类型,Shell变量:Shell变量的定义、删除变量、只读变量、变量类型...

    变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据.脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则. 在 Bash shell 中,每一个变量的值 ...

  4. linux超级基础系列——shell变量(本地变量和环境变量)

    linux超级基础系列--shell变量(本地变量和环境变量) 2006-12-04 00:39 为使shell编程更有效,系统提供了一些shell变量.shell变量可以保存诸如路径名.文件名或者一 ...

  5. linux中shell变量$#,$@,$0,$1,$2的含义解释

    linux中shell变量$#,$@,$0,$1,$2的含义解释:  变量说明:  $$  Shell本身的PID(ProcessID)  $!  Shell最后运行的后台Process的PID  $ ...

  6. 《Linux shell变量总结回顾》RHEL6

    在实际的生产中,运维一般使用的shell语法还是比较多的,时不时的就要写一个简短shell脚本,大型的shell脚本用到的function 比较多,便于下一个脚本的引入,下面主要总结一些简单的shel ...

  7. sed和awk中使用shell变量

    最近做预料处理,使用bash脚本,需要在脚本的sed和awk使用shell变量以控制循环,出现一些问题后找到解决办法如下: 1.sed使用shell变量  这个比较好办,sed命令中可以用单引号和双引 ...

  8. shell变量加单引号sql_关于shell:在Bash中的命令中扩展变量的单引号

    我想从bash shell脚本中运行一个命令,该脚本在单引号和变量中包含单引号和一些其他命令. 如repo forall -c '....$variable'. 在这种格式中,对$进行转义,不展开变量 ...

  9. 马哥学习笔记——shell变量类型

    shell变量基础 shell 变量是一种很"弱"的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如let. de ...

最新文章

  1. Bitsocket——BCH实时API,为BCH带来无限可能
  2. 简明天线理论与设计应用_天线理论与设计笔记5--(宽带天线、口径天线)
  3. shell训练营Day18
  4. 谁偷走了程序员的时间??
  5. 如何数据整合IBM Tivoli
  6. SQL的OPENROWSET开启和使用方法
  7. 深度学习(Deep Learning):循环神经网络一(RNN)
  8. 数字后端——布图规划
  9. 程序员何苦为难程序员?
  10. python 字符串转换
  11. Linux 备份与恢复
  12. 图解Transformer(完整版)
  13. sql server去空格函数LTRIM()RTRIM(),判断是否为空函数isnull(),以及获取字符串长度len()的使用方法
  14. WP8.1开发:简单的天气预报应用
  15. 分享一些ABP..ABS的广告过滤规则
  16. TP_link家庭无线路由
  17. 【金融项目】尚融宝项目(八)
  18. Android 倒计时; 时分秒与秒数的互转
  19. 华中科技大学计算机考博真题,2010年华中科技大学计算机考博试题
  20. 霍尔传感器磁极的磁场强度计算

热门文章

  1. Eclipse启动慢分析及解决 / Eclipse启动参数整理
  2. 9000+网站模板免费下载
  3. Cityscapes数据集使用与结果测试评估
  4. 卷土重来 263网络通信“继续上市”引来经营质疑
  5. jenkins java.io.IOException: Failed to load: Git plugin
  6. Go语言学习 五 注释和文档
  7. 【论文阅读】CVPR2023 ||CFA: Class-wise Calibrated Fair Adversarial Training
  8. select(有局限性),jq循环添加select的值
  9. Es6扩展运算符(...)的使用
  10. 【ELM回归预测】基于matlab遗传算法优化ELM回归预测【含Matlab源码 1673期】