你能做数学吗Linux命令行吗?你肯定可以!事实上,有相当多的命令可以简化这个过程,你甚至可以找到一些有趣的。让我们来看看一些非常有用的命令行命令和语法数学。
expr
第一,可能最明显的和常用的命令在命令行上执行数学计算expr(表达式)命令。它可以管理加、减、除法和乘法。它也可以用来比较数字。下面是一些例子:
增加一个变量
数= 0美元数= expr计数+ 1美元的回波数1美元
执行一个简单的计算和比较
expr 11 + 123 134美元expr 134/11 12 expr 134 - 11 123美元expr 11 * 123 expr:语法错误< = =哦!expr 11 \ * 123 1353美元expr 20% 3 2美元expr 11 \ > 10 1 expr 11 \ > 17美元0
请注意,您必须使用\字符*防止shell解释前面的星号作为参考,所有文件在当前目录和>面前阻止它被用于重定向命令的输出。%运算符是模计算。
这是一个稍微复杂的例子:
参与者= 11 = 156总份额= expr总美元/ $参与者的剩余= expr总美元——参与者\ *美元份额的回声分享14回声剩余2美元
如果我们有11个参与者在某些事件和156年奖金分配,每个参与者的公平份额是14,离开2锅中。
做比较
现在让我们看看的逻辑比较。这些语句可能看起来有点奇怪。他们不是设置值,但只有比较数字。什么expr在下面的例子是确定语句是否正确。如果结果是1,该声明是真实的;否则,这是错误的。
expr 11 = 11 1美元expr 11 = 12 0
读为“11 = 11吗?”和“11 = 12什么?”你会适应这是如何工作的。当然,没有人会问如果在命令行上11 = 11,但他们可能会问,如果年龄= 11美元。
$年龄= 11 expr年龄= 11 1美元
在数字上加上引号并不意味着你必须做一个字符串比较,而不是一个数字——显然,除非其中一个参数是一个字符串。
美元expr“十一”=“十一”1
$ expr“十一”=“011”
1美元expr“十一”=“十一”0
在下面的例子中,我们问是否大于5,10,是否大于99。
expr 10 \ > 5美元1 expr 10 \ > 99 0美元
当然,拥有真正的比较结果1和0错误导致违背我们普遍预计在Linux系统。下面的例子表明,使用expr在这种背景下不工作,因为如果与相反的方向(0 = true)。
# !/bin/bash echo - n“成本我们>”阅读成本echo - n“价格我们问>”阅读价格如果[expr价格\ >成本美元”);然后回声还有“我们赚钱”与“不卖”fi
现在,让我们来运行这个脚本:
美元。/ checkPrice成本> 11.50的价格我们问> 6我们赚钱
那肯定不会帮与销售!一个小小的改变,这将工作和我们预期的一样:
# !/bin/bash echo - n“成本我们>”阅读成本echo - n“价格我们问>”阅读价格如果[expr价格\ >成本美元的= = 1];然后回声还有“我们赚钱”与“不卖”fi
因素
的因素命令就像你可能期望工作。你喂它很多,它告诉你它的因素是什么。
因素111美元111:134 134:37美元因素2 67美元因素17894 17894:23 389美元因素1987 1987:1987
注意:在保理因素命令并没有取得多少进展,因为1987是一个最后的价值质数。
记
的记命令允许您创建一个数字列表。为其提供值的数量你想看到和你想要的数量。
美元记8 10 10 11 12 13 14 15 16 17
您还可以使用记像这样。这里我们要减少数量,告诉它我们要停止当我们到达2:
记8美元10 2 10 9 8 7 5 4 3 2
的记命令可以是有用的,如果你想遍历一系列数据来创建一个列表用于其他目的。
我在记7 17的美元;4月做呼应我美元;完成4月17日4月18日4月19日4月20日4月21日4月22日4月23日
公元前
的公元前命令可能是一个最好的工具命令行上进行计算。输入你想要执行的计算,管它命令如下:
美元回声“123.4 + 5/6 - (7.89 * 1.234)|公元前113.664
请注意,公元前不回避精度和你需要输入的字符串是相当简单的。它还可以进行比较,处理布尔运算,计算平方根,正弦、余弦、正切,等等。
美元回声“sqrt (256)”|公元前16 $ echo "s(90)" | bc -l .89399666360055789051
事实上,公元前甚至可以计算π。你决定你想看多少小数点:
美元回声”规模= 5;4 * (1)”|公元前-l 3.14156 $ echo "scale=10; 4*a(1)" | bc -l 3.1415926532 $ echo "scale=20; 4*a(1)" | bc -l 3.14159265358979323844 $ echo "scale=40; 4*a(1)" | bc -l 3.1415926535897932384626433832795028841968
和公元前不只是通过管道接收数据和发送答案。您还可以交互式地启动它,并输入您想要执行的计算。设置(如下所示)规模决定了有多少小数点后你会看到。
公元前公元前1.06.95版权1991 - 1994,1997,1998,2000,2004,2006自由软件基金会,公司。这是自由软件,绝对没有保修。详情类型“保修”。规模= 2 3/4 2/3点退出
使用公元前,你也可以把数字在不同的基地。的obase设置决定输出基地。
公元前公元前1.06.95版权1991 - 1994,1997,1998,2000,2004,2006自由软件基金会,公司。这是自由软件,绝对没有保修。详情类型“保修”。obase = 16 16 < = = =进入10 < < = = = = = =响应256进入100 < = = =响应辞职
最简单的方法之一将十六进制与十进制之间使用公元前是这样的:
美元回声”ibase = 16;F2”|公元前242美元回声”obase = 16;公元前242年“| F2
在上面的第一个例子中,我们将从十六进制转换为十进制通过设置输入基地(ibase)十六进制(基地16)。第二,我们做反向通过设置outbut基地(obase)十六进制。
简单的bash数学
集双重括号的,我们可以做一些简单的数学在bash中。在下面的例子中,我们创建一个变量,并给它一个值,然后执行加法,衰减结果,然后平方剩余价值。
美元$ ((e = 11)) ((e = e + 7))回波e 18美元$ ((e -)) $回声e 17美元((e = e * * 2))回波e 289美元
算术运算符允许您:
+ -加减+ +,递增和递减* / %相乘,分裂,找到剩余* *指数
您还可以使用逻辑和布尔操作符:
$ ((x = 11));如果美元(y = 7) ((x > y));然后>呼应“x > y”> fi x > y
$ ((x = 11));((y = 7));如果美元(z = 3) ((x > y)) > > ((y > z));然后>呼应“字母”滚下山去> fi字母滚下山去
或者如果你喜欢…
如果美元[x > y] < < [y > z];然后回声“字母滚下山去”;fi字母滚下山去
现在让我们提高2的3次方:
回声“2 ^ 3美元2 ^ 3美元回声“2 ^ 3”|公元前8
总结
肯定有许多不同的方式来处理数字和Linux系统在命令行上执行计算。我希望你拿起一个新的技巧两个通过阅读这篇文章。