澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

澳门新浦京娱乐场网站:数学运算和bc命令,学习

bash&shell类别小说:http://www.cnblogs.com/f-ck-need-u/p/7048359.html**

SHELL脚本攻略(学习笔记)--1.6 数学生运动算和bc命令,shell--1.6


正文目录:

1.6.1 基本整数运算

1.6.2 bc命令高档算术运算


使用let、$(())或$[]举办着力的板寸运算,使用bc实行尖端的运算,蕴含小数运算。当中expr命令也能开展整数运算,还是能断定参数是不是为整数,具体用法见expr命令全解。

Shell expr的用法  bc 命令   let命令

借使要实践运算,那就必得运算符,和其余的编制程序语言相似,shell也是有为数不菲的演算符如下:


1.6.1 基本整数运算

[[email protected] tmp]# str=10
[[email protected] tmp]# let str=str 6  # 等价于let str =6
[[email protected] tmp]# let str-=5     # 等价于let str=str-5
[[email protected] tmp]# echo $str
11

若果想在命令行中做计算,则能够选用$(())或$[]。

[[email protected] ~]# str=10
[[email protected] ~]# echo $((str =6))
16

[[email protected] ~]# echo $[str=str-6]
10

自然,在为变量赋算术值的时候也得以利用$(())和$[]。

[[email protected] ~]# str=10
[[email protected] ~]# str=$((str =6));echo $str
16

[[email protected] ~]# str=$[str-=6];echo $str
10

澳门新浦京娱乐场网站,骨子里,在算数计算进度中,等号侧面的变量是足以带上$符号的,但等号侧边的变量不容许带上$符号,因为它是要操作的变量,不是引用变量。举个例子:

[[email protected] ~]# let str=$str-1         # 等价于let str=str-1
[[email protected] ~]# str=$(($str-1))        # 等价于str=$((str-1))
[[email protected] ~]# srt=$[$str-1]          # 等价于str=$[str-1]
[[email protected] ~]# echo $((str=$str-1))  # 等价于echo $((str=str-1)),但不能写成echo $(($str=str-1))
[[email protected] ~]# echo $[str=$str-1]    # 等价于echo $[str=str-1],但不能写成echo $[$str=str-1]

还足以自增、自减运算。" "和"--"表示变量自动加1和减1。但是地方差别,重返的结果是例外的。

x  :先返回结果,再加1
  x:先加1再返回结果
x--:先返回结果,再减1
--x:先减1再返回结果

假使x的早先值为10,则echo $[x ]将展示10,但在呈现完后(即重回结果随后),x的值已经成为了11,再推行echo $x将回到11。

[[email protected] ~]# x=10;echo $((x  ));echo $x
10
11

假如那时候再echo $[x ]仍将回到11,但此时x已然是12了。

[[email protected] ~]# echo $((x  ));echo $x
11
12

再将x变量的早先值起首化为10,则echo $[ x]将彰显11,因为先加1后再赋值给x,echo再展现x的值。 x完全等价于x=x 1,它们都以先加1后赋值。

[[email protected] ~]# x=10;echo $((  x));echo $x
11
11

同理自减也是一模二样的。

所以,在使用自增或自减实行变量赋值时,需求在意所赋的值是不是加减立即生效的。比方:

[[email protected] ~]# x=10;y=$((x  ));echo $y;echo $y
10
10

因为y=$((x ))赋给y的值是加1前的值,尽管赋值甘休后,$((x ))已经造成11,但那和y非亲非故。

所以,对于自增自减类的变量赋值应该接纳先总括再突显的" x"或"--x"的办法。

[[email protected] ~]# x=10;y=$((  x));echo $y;echo $y
11
11

小结下数值变量的赋值运算的法门:

let i=i-1
let i=$i-1
let i-=1
i=$((i-1))
i=$(($i-1))
i=$[ i - 1 ]
i=$[ $i - 1 ]
echo $((i=i-1))
echo $((i=$i-1))

 

、-、:代表着加号 和减号 也许,负号

使用let、(())、$(())或$[]扩充基本的整数运算,使用bc实行尖端的演算,蕴含小数运算。此中expr命令也能实行整数运算,仍能判定参数是或不是为整数,具体用法见expr命令全解。

1.6.2 bc命令高等算术运算

bc可用以浮点数的猜度,是linux中的总计器。

以下是三个主导的效应示例:

[[email protected] ~]# bc
b 1.06.95          # 首先输出bc的版本信息,可以使用-q选项不输出头部信息
Copyright 1991-1994, 197, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
pie=3.1415   # 可以变量赋值
pie*3*3      # 运算时不需要空格
28.2735
r=3
pie*r*r
28.2735
pie*r^2      # 可以使用幂次方
28.2735
r=3 /* 将半径设置为3 */  # 还可以使用C语言风格的注释

输入quit命令可以退出bc计算器。

还协理自增和自减的机能。

[[email protected] ~]# bc -q
r=3
r  
3
r  
4
  r
6
  r
7
--r
6

bc运算器有一个内建的变量scale,用于表示计算的精度,暗中同意精度为0,所以除法运算的暗许结果是整数。

13/(1 3)
3
scale=3
13/(1 3)
3.250

更人性化的坚决守护是能够通过命令替换到兑现批管理形式的一个钱打二14个结。

它的日常格式参谋如下:

var=`echo "option1;option2;...;expression"|bc`

里头options部分日常设置精度scale,和变量赋值,expression部分是计算表明式,最终将它们位于反引号中赋值给变量。如:

[[email protected] ~]# area=`echo "scale=2;r=3;3.1415*r*r"|bc`

[[email protected] ~]# echo $area
28.2735

由于是在指令行中内定,所以这么的运用方式界定比较多。bc接受使用here string和here document的不二等秘书诀收取参数。最常做法是将它们放置于脚本中。

#!/bin/bash
# script for calculate something

var1=haha
var2=hehe

value=`bc<<EOF  # 在反引号中使用here string的方式
scale=3
r=3
3.1415*r*r
EOF`
echo $value

以下是总括1 2 ... 10的二种分化方法,须要输出在显示屏上的结果为"1 2 3 4 5 6 7 8 9 10=总结结果",那是可怜不易的例证。

[[email protected] tmp]# echo $(seq -s " " 10)=`seq -s " " 10|bc`
1 2 3 4 5 6 7 8 9 10=55

[[email protected] tmp]# echo $(seq -s " " 10)=$((`seq -s " " 10`))
1 2 3 4 5 6 7 8 9 10=55

[[email protected] tmp]# echo $(seq -s " " 10)=$(seq -s "   " 10|xargs expr)  # 注意" "和"   "
1 2 3 4 5 6 7 8 9 10=55

 

归来连串文章大纲:

数学生运动算

*、/、%:代表着乘号,除号,和取模。

里面let和(())差相当少统统等价,除了做数学生运动算,还辅助数学表明式决断,比如数值变量a是还是不是等于3:let a==3或((a==3)),但貌似不会采用它们来判别,而是选拔test命令结合条件表明式:test "$a" -eq 3。由此,本文只介绍let的赋值运算成效。

转发请申明出处:

数学生运动算和bc命令,shell--1.6 本文目录: 1.6.1 基本整数运算 1.6.2 bc命令高等算术运算 使用let、$(())或$[]开展基本...

let命令  expr命令  bc命令  $(())   $[]

**   : 幂运算

1.6.1 基本整数运算

[root@xuexi tmp]# str=10
[root@xuexi tmp]# let str=str 6  # 等价于let str =6
[root@xuexi tmp]# let str-=5     # 等价于let str=str-5
[root@xuexi tmp]# echo $str
11

let也足以应用(( ))进行轮换,它们大约全盘等价。且额外的功能是:假如最终一个算术表明式结果为0,则赶回状态码1,其余时候回来状态码0。

若果想在指令行中做总结,则足以使用$(())或$[]。

[root@xuexi ~]# str=10
[root@xuexi ~]# echo $((str =6))
16

[root@xuexi ~]# echo $[str=str-6]
10

本来,在为变量赋算术值的时候也得以选择$(())和$[]。

[root@xuexi ~]# str=10
[root@xuexi ~]# str=$((str =6));echo $str
16

[root@xuexi ~]# str=$[str-=6];echo $str
10

事实上,在算数计算进度中,等号左边的变量是能够带上$符号的,但等号左侧的变量不容许带上$符号,因为它是要操作的变量,不是援引变量。举例:

[root@xuexi ~]# let str=$str-1         # 等价于let str=str-1
[root@xuexi ~]# str=$(($str-1))        # 等价于str=$((str-1))
[root@xuexi ~]# srt=$[$str-1]          # 等价于str=$[str-1]
[root@xuexi ~]# echo $((str=$str-1))   # 等价于echo $((str=str-1)),但不能写成echo $(($str=str-1))
[root@xuexi ~]# echo $[str=$str-1]     # 等价于echo $[str=str-1],但不能写成echo $[$str=str-1]

还是能自增、自减运算。" "和"--"表示变量自动加1和减1。不过地方分裂,再次回到的结果是分裂的。

x :先回到结果,再加1

x:先加1再回来结果

x--:先回到结果,再减1

--x:先减1再回来结果

假设x的最初值为10,则echo $[x ]将显得10,但在呈现完后(即再次来到结果过后),x的值已经成为了11,再执行echo $x将重返11。

[root@xuexi ~]# x=10;echo $((x  ));echo $x
10
11

只要此刻再echo $[x ]仍将回来11,但此时x已然是12了。

[root@xuexi ~]# echo $((x  ));echo $x
11
12

再将x变量的开端值起先化为10,则echo $[ x]将显得11,因为先加1后再赋值给x,echo再突显x的值。 x完全等价于x=x 1,它们都以先加1后赋值。

[root@xuexi ~]# x=10;echo $((  x));echo $x
11
11

同理自减也是相同的。

之所以,在利用自增或自减实行变量赋值时,须求当心所赋的值是或不是加减立时生效的。例如:

[root@xuexi ~]# x=10;y=$((x  ));echo $y;echo $y
10
10

因为y=$((x ))赋给y的值是加1前的值,就算赋值截至后,$((x ))已经形成11,但那和y无关。

之所以,对于自增自减类的变量赋值应该利用先计算再展现的" x"或"--x"的情势。

[root@xuexi ~]# x=10;y=$((  x));echo $y;echo $y
11
11

总计下数值变量的赋值运算的办法:

let i=i-1

let i=$i-1

let i-=1

i=$((i-1))

澳门新浦京娱乐场网站:数学运算和bc命令,学习笔记。i=$(($i-1))

i=$[ i - 1 ]

i=$[ $i - 1 ]

echo $((i=i-1))

echo $((i=$i-1))

 

除此之外变量能够数学生运动算,数组也一直以来协理数学生运动算,且和变量同样,都能支撑自增和自减等操作。其实数组其实质便是变量,只可是变量在内部存款和储蓄器中是离散的上空,而数组在内部存储器中是各样的长空。

例如,数组arr_test[a]=10,则:

let arr_test[a]=${arr_test[0]} - 1

let arr_test[a]-=1

echo $((arr_test[a] ))

echo $[ arr_test[a] ]

其他运算方法都就如,就不赘述了。其实和变量相比较,只但是变量名改成arr_test[a],引用数组变量时改为${arr_test[a]}。

 

、-- :表示着扩展可能减小,它能够放在前置,也能够献身变量的终极

1.6.2 bc命令高档算术运算

bc可用来浮点数的总结,是linux中的总结器。该命令功用丰盛、强盛的令人骨痿,扶持自定义变量、自定义函数表明式逻辑、帮助科学总结等等。尽管功效丰硕,但超过十分之五时候仅用它的中坚计算作用。

以下是贰个为主的意义示例:

[root@node1 ~]# bc
b 1.06.95          # 首先输出bc的版本信息,可以使用-q选项不输出头部信息
Copyright 1991-1994, 197, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
pie=3.1415   # 可以变量赋值
pie*3*3      # 运算时不需要空格
28.2735
r=3
pie*r*r
28.2735
pie*r^2      # 可以使用幂次方
28.2735
r=3 /* 将半径设置为3 */  # 还可以使用C语言风格的注释

输入quit命令能够退出bc总括器。

还扶植自增和自减的成效。

[root@node1 ~]# bc -q
r=3
r  
3
r  
4
  r
6
  r
7
--r
6

bc运算器有四个内建的变量scale,用于表示计算的精度(其实是刻度),即小数位保留二人。私下认可刻度为0,所以除法运算的默许结果是整数。

13/(1 3)
3
scale=3
13/(1 3)
3.250

更人性化的效益是能够通过命令替换来贯彻批管理格局的计量。

它的相似格式参照他事他说加以考察如下:

var=`echo "option1;option2;...;expression"|bc`

里头options部分日常安装精度scale,和变量赋值,expression部分是计量表明式,最终将它们位于反引号中赋值给变量。如:

[root@node1 ~]# area=`echo "scale=2;r=3;3.1415*r*r"|bc`

[root@xuexi ~]# echo $area
28.2735

出于是在指令行中钦定,所以这么的采纳办法界定相当多。bc接受使用here string和here document的主意接受参数。最常做法是将它们放置于脚本中。

#!/bin/bash
# script for calculate something

var1=haha
var2=hehe

value=`bc<<EOF  # 在反引号中使用here string的方式
scale=3
r=3
3.1415*r*r
EOF`
echo $value

当bc总结的结果小于1的时候,比方"0.1 0.1=0.2",它会来得".2"并非突显"0.2",要想呈现出前边的0,bc本人如同未有做出相关选项。然而能够通过外界程序,如printf将其出示出来。也足以组合echo命令显示。

printf "%.2fn" `echo "0.1   0.1" | bc`
0.30

echo 0`echo "0.1   0.1" | bc`
0.3

以下是测算1 2 ... 10的两种分裂方式,需求输出在荧屏上的结果为"1 2 3 4 5 6 7 8 9 10=计算结果",那是特别不易的例证。

[root@node1 tmp]# echo $(seq -s " " 10)=`seq -s " " 10|bc`
1 2 3 4 5 6 7 8 9 10=55

[root@node1 tmp]# echo $(seq -s " " 10)=$((`seq -s " " 10`))
1 2 3 4 5 6 7 8 9 10=55

[root@node1 tmp]# echo $(seq -s " " 10)=$(seq -s "   " 10|xargs expr)  # 注意" "和"   "
1 2 3 4 5 6 7 8 9 10=55 

!、||、&&、(取反)(或) (and)

 

<、<=、>、>=  :相比较符号,小于、小于等于、大于、大于等于

expr命令平常用于整数值,但也可用以字符串。

==、!=、= :相等,不对等, =表示相等于

 

<<     >>  向左移动 向右移动

相似格式为:expr argument operator argument
expr也是一个手工业命令行计数器。
expr 10 10 等价于 echo 10 10|bc
20
expr 1500 – 900 等价于 echo 1500 – 900 |bc
2400
expr 30 / 3 等价于 echo 30 / 3|bc
10
expr 30 / 3 / 2 等价于 echo 30 / 3 / 2 |bc
5
(注意运算符左右都有空格 ,若无空格表示是字符串连接)
行使乘号时,必须用反斜线屏蔽其一定含义。因为shell大概会误解突显星号的意义。
expr 30 * 3 等价于 echo 30 * 3 |bc
90
对此四则运算赋值操作
val2=10
val1=$(($val2 – 1)) 等价于 val1=$(expr $val2 – 1) 等价于 val1=$(echo $val2 – 1|bc)
echo $val1

等等,这里就不说了 到前边实施中再见!

 

Shell编制程序之算术运占卜令

写法也是非常多的

(())  用于整数之间常用的运算符,作用高

 

let :用于整数运算,类似于(())

expr最重要的大概强大的字符串操作

expr :用于整数运算,可是还会有其余成效

1、提取钦点字符的下标:expr index 内容 字符

bc :Linux下的七个计量程序,切合整数及小数运算

例如
ind=`expr index "69lki" "k"`
echo $ind
4

$[] :用于整数运算

ind=`expr index "69lki" "k"`
echo $ind
4

awk:awk不仅可以够整数运算,也能够小数运算

 

declare: 定义变量值和质量,-i参数能够用于定义整形变量,做运算

2、提取字符串的子串:expr substr 内容 伊始地点 终点地点

率先眼看见这么些 以为很复杂,心乱,然则尚未关联,逐步的就好了~~~

例如
con=`expr substr "689sdfwe" "1" 3`
echo $con
689

一、双小括号(()) 数值运占卜令

3、计算字符串的长短
例如
con=`expr length "sdf"`
echo $con
3

双小括号的作用是进行数值运算与数值的比较,它的频率非常高,用法很灵活,是合作社运营职员时时利用的操作符
((e=e 1)) 它的效能就是把e 1的结果赋值给变量e可是不得以用 echo ((e=e 1))来使用,但能够运用echo $((e=e 1))
e=$((e=e 1)) 功能正是把e 1的执行结果赋值给变量e


数值相比较

bash Shell let命令 (2008-10-21 10:18:43)转载▼

((8>7&&5==5)) 用于数值在此之前的相比,用于标准判定


标签: 杂谈
莫西干发型运算日常经过 let 和 expr 那八个指令来贯彻,如对变量 x 加 1 方可编写:let "x = $x 1" 只怕 x=`expr $x 1‘,个人认为,二者差不离,前面一个表明比较简单,选择优秀者先使用之

echo $((2 1)) 用于直接出口运算表明式的结果,在(()) 前边加$符号

在bash中,let可以用来做数值运算
bash-2.05b$ export n=20
bash-2.05b$ n=n 1
bash-2.05b$ echo $n
n 1
n 1并不曾固守数字管理,而是安装字符串串连管理
那会儿假诺想达成n依据数值举行相加,则就须要let动手了
bash-2.05b$ export n=20
bash-2.05b$ let n =1
bash-2.05b$ echo $n

案例1:双小括号"(())"数值运算施行

在Bash Shell中,只好实行三个整数间的演算,其结果仍然为整数.要扩充算术
运算,须求动用let命令,语法为:
let expr
expr是二个带有项和操作符的表明式,项能够是一个变量或是贰个平头常数,
当使用整数常数时,其默许为十进制整数,客户可以用radio#number来内定其余
款式的平头,在那之中radio定义了整数是几进制表示的,number是该整数的值.若
radio>10,那么数字字符可从0-9和A-Z.
在表明式中帮忙的操作符及其含义为:
,-,*,/,% 加,减,乘,除,取模
>>,<<,&,^,| 左移,右移,位与,位异或,位或
?: 长富运算符.与C语言中的定义一致
~ 取补码
!,>=,<=,>,<,==,!=,&&,||
=, =,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
表明式式中也足以使用括号.括号或运算优先级的定义与平常Computer语言中的
相同.
let命令具备再次回到值.当总结结果(若有几个表明式时,以最后一个为准)为0时,
重回值为1,不然为0.
当表明式中隐含shell的特殊字符(如|)时,须求用援引符('或")将其援用起来.
应用let时还必要留意的时,对于let x y那样的架势,shell固然总括了x y的值
但却将结果摈弃,若不想那样,能够动用let sum=x y将x y的结果保存在变量sum中
另外仍是可以利用((和))操作符代替let命令,何况那样的话,还足以节约对算术
表明式的援用,如若想回到表明式的值,则需用$(())的格式.

[root@shell-yankerp sh]# echo $((1 1)) #计算1 1后输出 
2  #那么结果就是等于2 
[root@shell-yankerp sh]# 

if的规格中,“=”用于比较字符串;“-eq”用于比较整型数。

由此及彼使用减号


[root@shell-yankerp sh]# echo $((6-3)) #计算6-3等于多少 
3  #结果为3 
[root@shell-yankerp sh]# 

bc 命令
bc命令是一种帮助率性精度的互相实行的总计器语言。bash内置了对整数四则运算的补助,不过并不协理浮点运算,
而bc命令能够很便利的打开浮点运算,当然整数运算也不再话下。

是或不是以为有一点简单。那么接下去利用"(())"举行多少复杂的片段总结算术运算

 

[root@shell-yankerp sh]# ((a=1 2**3-4%3)) 

-i:强制走入交互式形式;
-l:定义使用的正规化数学库;
-w:对POSIX bc的恢宏给出警报新闻;
-q:不打字与印刷平常的GNU bc情形消息;
-v:突显指令版本音讯;
-h:彰显指令的帮扶消息。

以上例子也等于说,首先a是三个变量名,那么在a=前面包车型客车部分乘除的结果会赋值给a那么些变量,那么首先大家得通晓前面包车型客车测算结果是稍稍,在此个变量中 大家用到了 号"**"乃至"-"号满含“%”首先总计进程是那样的。先算乘除,后算加减

参数
文件:钦命富含总结职分的公文。

2**3 等于 2x2x2=8 乘算出来之后算除。 4%3=1 取模---- 8-1=7 最终1 7=8 最后结果为8 输出如下:

实例

澳门新浦京娱乐场网站 1

算术操作高端运算bc命令它能够进行浮点运算和一些高级函数:

例如2:

echo "1.212*3" | bc 

3.636 
设定小数精度(数值范围) 
echo "scale=2;3/8" | bc
 0.37 
参数scale=2是将bc输出结果的小数位设置为2位。
[root@shell-yankerp sh]# b=$((1 2**3-4%3)) #在这里b是一个变量 将变量名的计算结果赋值给b 
[root@shell-yankerp sh]# echo $b     #输出如下: 
8 
[root@shell-yankerp sh]# 

 

事实上例1 和2都以大半的 只不过是用了分歧的主意!!!

 

例3:特殊运算符号的演算实例

进制转变

[root@shell-yankerp sh]# a=8    #首先a变量名 = 变量值 等于8 那么a就是8 
[root@shell-yankerp sh]# echo $((a=a 2)) #原来a=8 那么现在a 2 结果为10 
10 
[root@shell-yankerp sh]# echo $((a =1))  #当结果为10 这一行代表 a=a 1那么就等于11 
11 
[root@shell-yankerp sh]# echo $((a**2))  #目前a=11 那么a**2 a的二次方 那么等于11x11=121 输出如下: 
121 
[root@shell-yankerp sh]# 
#!/bin/bash 
abc=192 
echo "obase=2;$abc" | bc 
执行结果为:11000000,这是用bc将十进制转换成二进制。 

#!/bin/bash a
bc=11000000 

echo "obase=10;ibase=2;$abc" | bc
 执行结果为:192,这是用bc将二进制转换为十进制。

例4:利用(())双括号,举行相比决断

 

[root@shell-yankerp sh]# echo $((2>1)) #当条件2>1正确后输出了1表示真 
1 
[root@shell-yankerp sh]# echo $((2>3)) #当条件2>3错误后输出0 
0 
[root@shell-yankerp sh]# echo $((6==6)) #6==6 那么就输出1 
1 
[root@shell-yankerp sh]#  

测算平方和平方根:

if 判定小实战

echo "10^10" | bc 

echo "sqrt(100)" | bc

澳门新浦京娱乐场网站 2

 

在上述的图中永不想一定是出口条件建构继续运维了因为8本来就不仅5;7自然就十二分7 输出如下:

澳门新浦京娱乐场网站 3

大家品尝的改下脚本如下:

澳门新浦京娱乐场网站 4

在上海图书馆中8等于5一定是不当的 那么输出如下:

澳门新浦京娱乐场网站 5

地点提到到了数字及变量必需为整数,无法是小数... 不过可以用bc来消除前边会谈到。

案例:在变量前后使用 、--、特殊运算符的表明式

先是大家须要知道 是怎么意思

、-- :表示着增添依旧缩减,它能够放在后置,也足以献身变量的末尾

[root@shell-yankerp sh]# a=10 
[root@shell-yankerp sh]# echo $((a  )) 
10 
[root@shell-yankerp sh]# echo $a 
11 
[root@shell-yankerp sh]# 

如上内容中的a=10 那么a是变量名 变量值等于10 那么echo $((a )) 的意趣上面已经说过了,输出结果为10 因为 在a的前面 所以先输出a的值为10 那么继续echo $a 那么就形成11 因为a 后边扩展1

例2:

[root@shell-yankerp sh]# a=11 
[root@shell-yankerp sh]# echo $((a--)) 
11 
[root@shell-yankerp sh]# echo $a 
10 
[root@shell-yankerp sh]# 

以上正是--的用法了。这里不在说了

在以下的案例中本人相信的大家肯定晓得了在前头加 和在后面加 的分别了 如下:

[root@shell-yankerp sh]# echo $a 
10 
[root@shell-yankerp sh]# echo $((--a)) 
9 
[root@shell-yankerp sh]# a=9 
[root@shell-yankerp sh]# echo $a 
9 
[root@shell-yankerp sh]# echo $((  a)) 
10 
[root@shell-yankerp sh]# 

例:通过(())运算后赋值给变量

[root@shell-yankerp sh]# yankerp=99 
[root@shell-yankerp sh]# echo $((yankerp 1)) 
100 
[root@shell-yankerp sh]# echo $(( yankerp 1 )) 
100 
[root@shell-yankerp sh]# 

在以上的案例中,有空格和没空格都以完全一样的。

含蓄(())各类大面积的运算符命令推行如下:

[root@shell-yankerp sh]# echo $((3 2)) 
5 
[root@shell-yankerp sh]# echo $((3-2)) 
1 
[root@shell-yankerp sh]# echo $((3**2)) 
9 
[root@shell-yankerp sh]# echo $((3*2))  
6 
[root@shell-yankerp sh]# echo $((3/2)) 
1 
[root@shell-yankerp sh]# echo $((3%2)) 
1 
[root@shell-yankerp sh]# 

各个(())运算的shell脚本案例

#!/bin/bash 
# DATE:Wed Jan 31 19:49:59 CST 2018 
# This is a yankerp! 

a=6 
b=3 
echo "a-b=$((a-b))" 
echo "a b=$((a b))" 
echo "a/b=$((a/b))" 
echo "a**b=$((a**b))" 

出口结果为如下:

[root@shell-yankerp sh]# sh test.sh  
a-b=3 
a b=9 
a/b=2 
a**b=216 
[root@shell-yankerp sh]#  

特殊地点变量 数值运算实战案举例下:

#!/bin/bash 
# DATE:Wed Jan 31 19:49:59 CST 2018 
# This is a yankerp! 

a=$1 
b=$2 
echo "a-b=$((a-b))" 
echo "a b=$((a b))" 
echo "a**b=$((a**b))" 
echo "a/b=$((a/b)) 

在以上的台本中 大家定义了特种的地方变量 下边定义了数值运算,那么这些剧本的效能是,当大家输入多少个字符,个中第二个字符赋值给了变量a 第一个字符赋值给了变量b 那么在底下举办数值运算,如果此脚本看不懂的门阀能够参见笔者那篇小说//www.jb51.net/article/134246.htm

运营结果如下:

[root@shell-yankerp sh]# sh test.sh 6 3 
a-b=3 
a b=9 
a**b=216 
a/b=2 
[root@shell-yankerp sh]#  

那约等于卓殊职位变量 本章的变量数值运算的结缘

let运占星令的用法

例如

[root@shell-yankerp ~]# a=2   
[root@shell-yankerp ~]# a=a 8  #没有用let 
[root@shell-yankerp ~]# echo $a 
a 8  #输出结果 
[root@shell-yankerp ~]# unset a #清除变量  
[root@shell-yankerp ~]# a=2 
[root@shell-yankerp ~]# let a=a 8 使用let 
[root@shell-yankerp ~]# echo $a 
10 
[root@shell-yankerp ~]# 

实则还足以如此落成,如下:

[root@shell-yankerp ~]# a=2 
[root@shell-yankerp ~]# echo $((a=a 8)) 
10 
[root@shell-yankerp ~]# echo $a 
10 
[root@shell-yankerp ~]# unset a 
[root@shell-yankerp ~]# a=2 
[root@shell-yankerp ~]# let a=a 8 
[root@shell-yankerp ~]# echo $a 
10 
[root@shell-yankerp ~]#  

相互分别!!!如上

expr命令用法实例:

[root@shell-yankerp sh]# expr 2   2 
4 
[root@shell-yankerp sh]# expr 4 - 2 
2 
[root@shell-yankerp sh]# expr 4 * 2 
8 
[root@shell-yankerp sh]# expr 4 / 2  
2 
[root@shell-yankerp sh]#  

当大家挑选用*号要求拿转义、须要注意在用expr命令时 左右两边必定要空格

2、expr合作变量实例

[root@shell-yankerp sh]# a=10 
[root@shell-yankerp sh]# a=`expr $a   10` 
[root@shell-yankerp sh]# echo $a 
20 
[root@shell-yankerp sh]# 

expr的百货店级实战案例:

[root@shell-yankerp sh]# i=5  #这里设置了一个变量 i=5 
[root@shell-yankerp sh]# expr $i   6 &>/dev/null  #那么我们使用expr命令 $i   6 这里的6是一个整数 
[root@shell-yankerp sh]# echo $?  #执行完成后我们使用特殊变量 $?来判断以上命令 
0     ---返回结果为0 
[root@shell-yankerp sh]# expr $i   zhangsan &>/dev/null #同时这里又设置了一个变量 在这里的zhangsan是字符串 
[root@shell-yankerp sh]# echo $?    #使用特殊变量判断 
2   #结果为2  
[root@shell-yankerp sh]#  

运用expr做计算,将一个不解的变量和几个已知的三个整数相加,看重返的值是或不是为0,借使暗中同意是0 那么正是一个板寸。借使非0则输入的正是字符串不是整数。

例:通过参数推断输出内容是还是不是为整数

#!/bin/bash 
expr $1   1 &>/dev/null  #这里是一个命令 使用了expr 也使用了特殊的位置变量 
if [ "$?" -eq 0 ]     #如果以上命令执行结果为0  
 then      #那么 
  echo "输入的是整数~"  #输出一条 输入的是整数 
 else   #否则 
  echo "/bin/sh $# 请输入一个整数"   这里也使用了特殊的位置变量 
fi 

运维脚本测量检验

[root@shell-yankerp sh]# cat aaa.sh  
#!/bin/bash 
expr $1   1 &>/dev/null 
if [ "$?" -eq 0 ] 
 then 
  echo "输入的是整数~" 
 else 
  echo "/bin/sh $0 请输入一个整数" 
fi 
[root@shell-yankerp sh]# sh aaa.sh 123 
输入的是整数~ 
[root@shell-yankerp sh]# sh aaa.sh zhangsan lisi 
/bin/sh aaa.sh 请输入一个整数 
[root@shell-yankerp sh]# 

澳门新浦京娱乐场网站 6

实战:首先关判定参数个数是或不是为2.若不是请给出提醒
          第二关决断参数是还是不是为整数,若是否那么继续给出提醒
          第三关做运算~~~

#!/bin/bash 
if [ "$#" -ne "2" ] 
 then 
  echo "/bin/bash $0 请输出两个数值..." 
  exit 1 
fi 
#no.2 
a=$1 
b=$2 
expr $1   1 &>/dev/null 
if [ "$?" -ne "0" ] 
 then 
  echo "请输入数值..." 
  exit 1 
fi 
#no.3 
echo "a b=$((a b))"  
echo "a-b=$((a-b))" 
echo "a/b=$((a/b))" 
echo "a*b=$((a*b))" 
echo "a**b=$((a**b))" 
echo "a%b=$((a%b))" 

剖析:在上述脚本中实际很简短,第一if 假诺输入的不是多个传参值,那么给出提示那是第一段if条件语句,假若输入的是四个数值,那么继续履行上面包车型大巴口径,在其次个规范使用了任务参数变量$1 使用了expr命令来推断顾客输入的是数字照旧字符串,当客商输入的是数字那么就是回到是水到渠成的 那么大家接纳了if语句 即使下边命令实施成功 如若不等于0 那么给出相应的唤起,最后前边的四个标准创设,那么接下去举行算法,那么些前边是说过的。

施行脚本如下:

澳门新浦京娱乐场网站 7

好了 此次就到此地,希望阅读者快快吸取~~~ 后续不断更新 多谢大家,也愿意大家多都赐教脚本之家。

扬言:以上小说是<<跟着老男孩学Linux运行Shell编制程序实战>>第五章;一部分看完的下结论!

你大概感兴趣的篇章:

  • 详解Shell编制程序之变量数值总计(二)

本文由澳门新浦京娱乐场网站发布于澳门新浦京娱乐场网站,转载请注明出处:澳门新浦京娱乐场网站:数学运算和bc命令,学习