关于Linux命令行下的数学运算示例详解

| |
[ 所属分类 运维安全 | 发布者 店小二04 | 时间 | 作者 红领巾 ] 0人收藏点击收藏

expr

\$ count=0
\$ count=`expr \$count + 1`
\$ echo \$count
1

\$ expr 11 + 123
134
\$ expr 134 / 11
12
\$ expr 134 - 11
123
\$ expr 11 * 123
expr: syntax error <== oops!
\$ expr 11 \* 123
1353
\$ expr 20 % 3
2

participants=11
total=156
share=`expr \$total / \$participants`
remaining=`expr \$total - \$participants \* \$share`
echo \$share
14
echo \$remaining
2

\$ expr 11 = 11
1
\$ expr 11 = 12
0

\$ age=11
\$ expr \$age = 11
1

\$ expr "11" = "11"
1
\$ expr "eleven" = "11"
0

\$ expr 10 \> 5
1
\$ expr 10 \> 99
0

#!/bin/bash
echo -n "Cost to us> "
echo -n "Price we're asking> "
if [ `expr \$price \> \$cost` ]; then
echo "We make money"
else
echo "Don't sell it"
fi

\$ ./checkPrice
Cost to us> 11.50
We make money

#!/bin/bash
echo -n "Cost to us> "
echo -n "Price we're asking> "
if [ `expr \$price \> \$cost` == 1 ]; then
echo "We make money"
else
echo "Don't sell it"
fi
factor

factor 命令的功能基本与你预期相符。你给出一个数字，该命令会给出对应数字的因子。

\$ factor 111
111: 3 37
\$ factor 134
134: 2 67
\$ factor 17894
17894: 2 23 389
\$ factor 1987
1987: 1987

jot

jot 命令可以创建一系列数字。给定数字总数及起始数字即可。

\$ jot 8 10
10
11
12
13
14
15
16
17

\$ jot 8 10 2
10
9
8
7
5
4
3
2

jot 可以帮你构造一系列数字组成的列表，该列表可以用于其它任务。

\$ for i in `jot 7 17`; do echo April \$i; done
April 17
April 18
April 19
April 20
April 21
April 22
April 23
bc

bc 基本上是命令行数学运算最佳工具之一。输入你想执行的运算，使用管道发送至该命令即可：

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

\$ echo "sqrt(256)" | bc
16
\$ echo "s(90)" | bc -l
.89399666360055789051

\$ echo "scale=5; 4*a(1)" | bc -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

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

\$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
obase=16
16 <=== entered
10 <=== response
256 <=== entered
100 <=== response
quit

\$ echo "ibase=16; F2" | bc
242
\$ echo "obase=16; 242" | bc
F2

\$ ((e=11))
\$ (( e = e + 7 ))
\$ echo \$e
18
\$ ((e--))
\$ echo \$e
17
\$ ((e=e**2))
\$ echo \$e
289

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

\$ ((x=11)); ((y=7))
\$ if (( x > y )); then
> echo "x > y"
> fi
x > y
\$ ((x=11)); ((y=7)); ((z=3))
\$ if (( x > y )) >> (( y > z )); then
> echo "letters roll downhill"
> fi
letters roll downhill

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

\$ echo "2 ^ 3"
2 ^ 3
\$ echo "2 ^ 3" | bc
8

tags: echo,gt,expr,运算,bc,命令,Linux,lt,数字,scale,factor,进制,jot

1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责；
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性，不作出任何保证或承若；
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。