Bash中简单算术运算的总结

Bash中执行算术运算有很多种实现方式,下面总结如下:

  • Bash内建的let命令

let varName=expr      举例:

n1=3
n2=4
let sum=n1+n2
n3=2
n4=10
n5=5
let n1++
let n2+=4
let sum=\(\(n1+n2\)*n5\)*(n4-n3)

表达式中有括号的,要对括号进行转义,尤其是表达式中运算操作符右边的括号!

  • $[expr]

varName=$[expr]     举例:

n1=3
n2=4
sum=$[n1+n2]

n3=2
n4=10
n5=5
sum=$[((n1+n2)*n5)*(n4-n3)]
  • $((expr))

varName=$((expr))     举例:

n1=3
n2=4
sum=$((n1+n2))

n3=2
n4=10
n5=5
sum=$((((n1+n2)*n5)*(n4-n3)))
  • expr命令

expr EXPRESSION ,其中EXPRESSION可以是 n1 + n2, n1 – n2, n1 > n2, n1 = n2等等,详细信息可以man expr命令。特别注意的是EXPRESSION中各运算参数和运算操作符之间都要有空格隔开,而且运算参数以值引用的方式出现。例:

n1=3
n2=4
sum=`expr n1 + n2`
另外,expr命令在算术运算方面似乎不支持使用括号的复杂的算术表达式,只支持二元运算.
  • ((expr))

举例:

n1=3
n2=4
((sum=n1+n2))

n3=2
n4=10
n5=5
((sum=((n1+n2)*n5)*(n4-n3)))

以上算术运算中,对运算表达式中的变量参数,可以直接使用变量参数,也可以以引用的方式,即 var 等同于 $var。赋值表达式中的被赋值变量除外。例:

let sum=num1+num2    等同于 let sum=$num1+$num2

sum=$[num1+num2]    等同于     sum=$[$num1+$num2]

sum=$((num1+num2))    等同于 sum=$(($num1+$num2))

((sum=num1+num2)) 等同于 ((sum=$num1+$num2))

另外,以上所有算术运算实现方式,都不支持浮点精度运算,只支持整型运算。

时间: 2024-10-10 14:34:49

Bash中简单算术运算的总结的相关文章

bash中的算术运算

bash中的算术运算: 操作符+.-.*./.% declare: -i:整型变量 -x:环境变量,类似于export 1.let:进行算术运算,格式为let varName=算术表达式 如果计算结果为小数,小数部分被省略. 如:let sum=4+1,结果为5 echo $sum let s=16/3,结果为5 echo $s 2.varName=$[算术表达式] 3.varName=$((算术表达式)) 4.varName=`expr $num1 + $num2`,注意+好前后要有空格,否个

shell中的算术运算

shell中的算术运算方式有很多种,如,A=1,B=2,那么要怎么计算A+B的值了? 不能简单的$A+$B,如果这样运算的话,得出的结果为1+2,显然不是我们想要的结果,要的出结果为3,我们有一下几中方法: 1.let C=$A+$B,echo $C 输出的值就为3 2.C=$(( $A+$B )) 3.C=$[$A+$B] 4.C=`expr $A + $B` (需要注意+号与两边的数值之间要有空格隔开,否则C的结果为1+2) 5.... 练习:写一个脚本给定一个用户,获取其密码警告期限:而后

bash中的正则工具几种引用方式的区别

在平时大量的日志数据分析时候,我们就会大量的使用正则表达式用来配合平时写的脚本来带来需要的效果,而在使用正则表达式工具的时候都是在需要在引用中,在平时我们的引用一般有3中,分别是:双引号("").单引号('').反引号(``). 其中最后一种和前2种区分还是比较简单的,反引号(``)的引用在bash中一般是用来做参数展开,用于获取最后参数运算后的结果用的,而双引号("").单引号('')这2种区别还是有点不好区分的,记得以前还有朋友来问过我,在这里就简单的说一下,从

UNIX/Linux系统管理技术手册(3)----bash 数组和算术运算

复杂的数据结构和计算不是 bash 的特长.但它的确至少提供了数组和算术运算. 1.算术运算 所有的 bash 变量的值都是字符串,所以 bash 在赋值的时候并不区分数字 1 和 字符串 "1" .不同之处在于如何使用变量.下面几行代码展示出了其中的差异: #!/bin/bash a=1 b=$((2)) c=$a+$b d=$(($a+$b)) echo "$a + $b = $c \t(plus sign as string literal)" echo &q

Linux bash 中,如何将正常信息和错误信息输出到文件

问题描述: $ command 2>> error $ command 1>> output 是否有方法,在bash同一行,实现输出stderr到error文件,输出stdout到output文件? 也就是,如何在bash的同一行,实现stderr和stdout重定向到不同的文件? 解决方法: 将它们放入同一行,command 2>> error 1>> output 然而,注意 >> 是如果文件有数据,会在文件尾部添加内容.而 > 将会重

[Linux]Bash中的任务(job)管理

?? 本来不准备写这篇博客的,因为任务管理(job管理)非常非常常用,以至于觉得根本没有必要去写这样一个东西.但想了下,还是记录一下吧,也许有人会用到呢. 不知你是否碰到过这样的情况,当你兴致勃勃的打开VIM,写代码写到正酣时,运营MM或者产品MM气喘吁吁的跑过来:"赶紧帮我跑一下xx的数据,一会做PPT要用".可是不想直接关闭当前的VIM,而且某些系统下,又不能新开tty(如设置了maxlogins参数)去执行这些任务,这可怎么办?这其实就涉及到了任务(job)管理. 那么什么是任务

[转帖]bash中(),{},(()),[],[[]]的区别

https://www.cnblogs.com/marility/p/7259821.html 差之毫厘谬以千里 需要仔细认真 前言:在bash中遇到各种括号,同时在进行字符数值比较判定时,总是不断出现问题,于是通过参考<advanced bash-scripting guide>,同时在centos 6.7版本上进行测试,现况总结如下.如有纰漏,望指正. 一.() 一个命令组合,相当于一个命令组 [[email protected]~chunlanyy testdir]# I=123;(I=

bash中 2&gt;&amp;1 &amp; 的解释

1.首先,bash中0,1,2三个数字分别代表STDIN_FILENO.STDOUT_FILENO.STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出). 2.输入输出可以重定向,所谓重定向输入就是在命令中指定具体的输入来源,譬如 cat < test.c 将test.c重定向为cat命令的输入源.输出重定向是指定具体的输出目标以替换默认的标准输出,譬如ls > 1.txt将ls的结果从标准输出重定向为1.txt文本

bash中通过设置PS1变量改变提示符颜色

参考 <Prompt Magic> ubuntu初始时bash提示符的颜色同程序输出的颜色相同,当大量有输出时,找到输出信息开始的地方往往很费劲.如果把提示符的颜色变成更为醒目的颜色,那么就很容易定位输出信息开始处.bash中想要改变提示符颜色可以通过PS1变量的值来设置,如果将其放入用户对应目录下的.bashrc文件中,则用户打开bash时自动更改颜色.这里,我将提示符改成绿色:    PS1="\[\e[32m\]\[email protected]\h:\w\$ \[\e[0m