|
|
|
|
挪动端

通博8888官网下令行下的数学运算

有几个风趣的下令可以在 通博8888官网 零碎下做数学运算: expr、factor、jot 和 bc 下令。可以在 通博8888官网 下令行下做数学运算吗?固然可以!现实上,有不少下令可以轻松完成这些操纵,此中一些乃至让你大吃一惊。让我们来学习这些有效的数学运算下令或下令语法吧。

作者:Sandra Henry-stocker泉源:通博8888官网中国|2018-05-15 08:40

人工智能+区块链的开展趋向及使用调研陈诉


通博8888官网下令行下的数学运算

有几个风趣的下令可以在 通博8888官网 零碎下做数学运算: exprfactorjotbc 下令。

可以在 通博8888官网 下令行下做数学运算吗?固然可以!现实上,有不少下令可以轻松完成这些操纵,此中一些乃至让你大吃一惊。让我们来学习这些有效的数学运算下令或下令语法吧。

expr

起首,关于在下令利用用下令停止数学运算,能够最容易想到、最常用的下令便是 expr表达式expression。它可以完成四则运算,也可以用于比拟巨细。上面是几个例子:

变量递增

  1. $ count=0
  2. $ count=`expr $count + 1`
  3. $ echo $count
  4. 1

完成复杂运算

  1. $ expr 11 + 123
  2. 134
  3. $ expr 134 / 11
  4. 12
  5. $ expr 134 - 11
  6. 123
  7. $ expr 11 * 123
  8. expr: syntax error <== oops!
  9. $ expr 11 * 123
  10. 1353
  11. $ expr 20 % 3
  12. 2

留意,你需求在 * 运算符之前添加 标记,防止语法错误。% 运算符用于取余运算。

上面是一个略微庞大的例子:

  1. participants=11
  2. total=156
  3. share=`expr $total / $participants`
  4. remaining=`expr $total - $participants * $share`
  5. echo $share
  6. 14
  7. echo $remaining
  8. 2

假定某个运动中有 11 位到场者,需求发表的奖项总数为 156,那么均匀每个到场者取得 14 项奖项,额定剩余 2 个奖项。

比拟

上面让我们看一下比拟的操纵。从第一印象来看,语句看似有些独特;这里并不是设置数值,而是停止数字比拟。在本例中 expr 判别表达式能否为真:假如后果是 1,那么表达式为真;反之,表达式为假。

  1. $ expr 11 = 11
  2. 1
  3. $ expr 11 = 12
  4. 0

请读作“11 能否即是 11?”及“11 能否即是 12?”,你很快就会习气这种写法。固然,我们不会在下令行上实行上述比拟,能够的比拟是 $age 能否即是 11

  1. $ age=11
  2. $ expr $age = 11
  3. 1

假如将数字放到引号两头,那么你将停止字符串比拟,而不是数值比拟。

  1. $ expr "11" = "11"
  2. 1
  3. $ expr "eleven" = "11"
  4. 0

在本例中,我们判别 10 能否大于 5,以及能否大于 99。

  1. $ expr 10 > 5
  2. 1
  3. $ expr 10 > 99
  4. 0

确实,前往 1 和 0 辨别代表比拟的后果为真和假,我们普通预期在 通博8888官网 上失掉这个后果。在上面的例子中,依照上述逻辑运用 expr 并不准确,由于 if 的任务原理恰好相反,即 0 代表真。

  1. #!/bin/bash
  2.  
  3. echo -n "Cost to us> "
  4. read cost
  5. echo -n "Price we're asking> "
  6. read price
  7.  
  8. if [ `expr $price > $cost` ]; then
  9. echo "We make money"
  10. else
  11. echo "Don't sell it"
  12. fi

上面,我们运转这个剧本:

  1. $ ./checkPrice
  2. Cost to us> 11.50
  3. Price we're asking> 6
  4. We make money

这显然与我们预期不符!我们略微修正一下,以便使其按我们预期任务:

  1. #!/bin/bash
  2.  
  3. echo -n "Cost to us> "
  4. read cost
  5. echo -n "Price we're asking> "
  6. read price
  7.  
  8. if [ `expr $price > $cost` == 1 ]; then
  9. echo "We make money"
  10. else
  11. echo "Don't sell it"
  12. fi

factor

factor 下令的功用根本与你预期符合。你给出一个数字,该下令会给出对应数字的因子。

  1. $ factor 111
  2. 111: 3 37
  3. $ factor 134
  4. 134: 2 67
  5. $ factor 17894
  6. 17894: 2 23 389
  7. $ factor 1987
  8. 1987: 1987
  9.  

注:factor 下令关于最初一个数字没有前往更多因子,这是由于 1987 是一个质数

jot

jot 下令可以创立一系列数字。给定命字总数及肇始数字即可。

  1. $ jot 8 10
  2. 10
  3. 11
  4. 12
  5. 13
  6. 14
  7. 15
  8. 16
  9. 17

你也可以用如下方法运用 jot,这里我们要求递加至数字 2。

  1. $ jot 8 10 2
  2. 10
  3. 9
  4. 8
  5. 7
  6. 5
  7. 4
  8. 3
  9. 2

jot 可以帮你结构一系列数字构成的列表,该列表可以用于别的义务。

  1. $ for i in `jot 7 17`; do echo April $i; done
  2. April 17
  3. April 18
  4. April 19
  5. April 20
  6. April 21
  7. April 22
  8. April 23

bc

bc 根本上是下令行数学运算最佳东西之一。输出你想实行的运算,运用管道发送至该下令即可:

  1. $ echo "123.4+5/6-(7.89*1.234)" | bc
  2. 113.664

可见 bc 并没有疏忽精度,并且输出的字符串也相称刀切斧砍。它还可以停止巨细比拟、处置布尔值、盘算平方根、正弦、余弦和正切等。

  1. $ echo "sqrt(256)" | bc
  2. 16
  3. $ echo "s(90)" | bc -l
  4. .89399666360055789051

现实上,bc 乃至可以盘算 pi。你需求指定需求的精度。

  1. $ echo "scale=5; 4*a(1)" | bc -l
  2. 3.14156
  3. $ echo "scale=10; 4*a(1)" | bc -l
  4. 3.1415926532
  5. $ echo "scale=20; 4*a(1)" | bc -l
  6. 3.14159265358979323844
  7. $ echo "scale=40; 4*a(1)" | bc -l
  8. 3.1415926535897932384626433832795028841968

除了经过管道接纳数据并前往后果,bc还可以交互式运转,输出你想实行的运算即可。本例中提到的 scale 设置可以指定无效数字的个数。

  1. $ bc
  2. bc 1.06.95
  3. Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
  4. This is free software with ABSOLUTELY NO WARRANTY.
  5. For details type `warranty'.
  6. scale=2
  7. 3/4
  8. .75
  9. 2/3
  10. .66
  11. quit

你还可以运用 bc 完成数字进制转换。obase 用于设置输入的数字进制。

  1. $ bc
  2. bc 1.06.95
  3. Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
  4. This is free software with ABSOLUTELY NO WARRANTY.
  5. For details type `warranty'.
  6. obase=16
  7. 16 <=== entered
  8. 10 <=== response
  9. 256 <=== entered
  10. 100 <=== response
  11. quit

按如下方法运用 bc 也是完成十六进制与十进制转换的最复杂方法之一:

  1. $ echo "ibase=16; F2" | bc
  2. 242
  3. $ echo "obase=16; 242" | bc
  4. F2

在下面第一个例子中,我们将输出进制(ibase)设置为十六进制(hex),完成十六进制到为十进制的转换。在第二个例子中,我们实行相反的操纵,行将输入进制(obase)设置为十六进制。

复杂的 bash 数学运算

经过运用双括号,我们可以在 bash 中完成复杂的数学运算。在上面的例子中,我们创立一个变量,为变量赋值,然后顺次实行加法、自减战争方。

  1. $ ((e=11))
  2. $ (( e = e + 7 ))
  3. $ echo $e
  4. 18
  5.  
  6. $ ((e--))
  7. $ echo $e
  8. 17
  9.  
  10. $ ((e=e**2))
  11. $ echo $e
  12. 289

容许运用的运算符包罗:

  1. + - 加法及减法
  2. ++ -- 自增与自减
  3. * / % 乘法、除法及求余数
  4. ^ 指数运算

你还可以运用逻辑运算符和布尔运算符:

  1. $ ((x=11)); ((y=7))
  2. $ if (( x > y )); then
  3. > echo "x > y"
  4. > fi
  5. x > y
  6.  
  7. $ ((x=11)); ((y=7)); ((z=3))
  8. $ if (( x > y )) >> (( y > z )); then
  9. > echo "letters roll downhill"
  10. > fi
  11. letters roll downhill

或许如下方法:

  1. $ if [ x > y ] << [ y > z ]; then echo "letters roll downhill"; fi
  2. letters roll downhill

上面盘算 2 的 3 次幂:

  1. $ echo "2 ^ 3"
  2. 2 ^ 3
  3. $ echo "2 ^ 3" | bc
  4. 8

总结 

在 通博8888官网 零碎中,有许多差别的下令行东西可以完成数字运算。盼望你在读完本文之后,能掌握一两个新东西。

【编辑引荐】

  1. 万万万万不行运转的通博8888官网下令
  2. 在Ubuntu和通博8888官网 Mint中轻松装置Android Studio
  3. 女生适不合适进入IT行业做通博8888官网运维工程师?
  4. 给初学者看的shuf下令教程
  5. 逼格高又适用的通博8888官网初级下令,开辟运维都要懂
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
各人都在看
猜你喜好

读 书 +更多

网络工程师必读——接中计与交流网

本书因此一个典范的盘算机广域网通讯为配景停止编写的,细致、片面地引见了通讯网中最次要的两个局部:现在,国际外接中计与交流网的次要技...

订阅51CTO邮刊

点击这里检查样刊

订阅51CTO邮刊