Home  >  Article  >  Backend Development  >  Detailed explanation of shell arithmetic operations in Linux

Detailed explanation of shell arithmetic operations in Linux

小云云
小云云Original
2018-03-20 13:51:492493browse

This article mainly shares with you the detailed explanation of Shell arithmetic operations in Linux. Summarizes the four methods of arithmetic operations in Bash shell. I hope it can help everyone.

1. Use expr external program

Add r=`expr 4 + 5`
echo $r

Attention! '4' '+' '5' There must be spaces between the three

r=`expr 4 * 5` # Error

Multiplication r =`expr 4 \* 5`

2. Use $(( ))

r=$( (4 + 5))

echo $r

3. Use $[ ]##r= $[ 4 + 5 ]

echo $r


Multiplication

r=`expr 4 \* 5`

r=$(( 4 * 5 ))
r=$ [ 4 * 5 ]
echo $r

Division

r=`expr 40 / 5`

r=$(( 40 / 5 ))
r=$[ 40 / 5 ]
echo $r

Subtraction

r=`expr 40 - 5`

r=$(( 40 - 5 ))
r=$[ 40 - 5 ]
echo $r

Find the remainder

r=$[ 100 % 43 ]

echo $r

Multiple to the power (such as 2 to the 3rd power)

r=$(( 2 ** 3 ))

r=$[ 2 ** 3 ]
echo $r
Note: expr is not raised to a power

4. Use the let command Addition:

n=10

let n=n+1
echo $n #n= 11

Multiplication:

let m=n*10

echo $m

Division:

let r=m/10

echo $r

Find the remainder:

let r=m%7

echo $r

Multiple to the power:

let r=m**2
echo $r

Although the Bash shell has four arithmetic operation methods, not all of them are cross-platform. It is recommended to use expr.

In addition, we often have

add 1 operation
in scripts. The following four methods are available: m=$[ m + 1]m=`expr $m + 1`
m=$(($m + 1))
let m=m+1

 

Shell awk 循环求和

1. 简单求和

$ cat test.txt 
11
22
33
44
55
$ awk '{sum += $1};END{print sum}' test.txt  
165


2. 特定列求和

$ cat test.txt 
aa      11
bb      22
cc      33
aa      44
dd      55
$ awk '/aa/ {sum += $2};END {print sum}' test.txt 
55


3. 求和、平均数、最大值、最小值

$ cat test.txt 
aa      11
bb      22
cc      33
aa      44
dd      55
$ cat test.txt | awk '{sum += $2};END {print sum}'
165
$ cat test.txt | awk '{sum += $2};END {print sum/NR}'
33
$ cat test.txt | awk 'BEGIN {max=0} {if($2>max) max=$2 fi};END {print max}'
55
$ cat test.txt | awk &#39;BEGIN {min=999999999} {if($2<min) min=$2 fi};END {print min}&#39;

awk 浮点运算:

运算表达式: awk 'BEGIN{printf "%.6f\n", ( 10 / 3)}'

运算结果: 3.333333

PS:shell的内部算术运算符无法处理浮点数,所以当需要处理浮点数是,要用到外部工具(如awk)

相关推荐:

shell每天自动备份mysql数据库的方法实例

The above is the detailed content of Detailed explanation of shell arithmetic operations in Linux. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn