携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
目录
- 使用bash
- 使用let列表
- 使用expr命令
- 使用bc命令
- 使用awk命令
- 使用factor命令
1、使用bash
使用双括号可以像C语言一样直接使用运算符进行计算。
[root@localhost ~]# echo $((13+20))
33
[root@localhost ~]# a=$((2*45))
[root@localhost ~]# echo $a
90
[root@localhost ~]# b=$(($a-3))
[root@localhost ~]# echo $b
87
[root@localhost ~]# c=$(($b/2))
[root@localhost ~]# echo $c
43
[root@localhost ~]# d=$(($c%5))
[root@localhost ~]# echo $d
3
2、使用let命令
使用let命令后,可以直接跟表达式,不用加双括号。
[root@localhost ~]# let a=1+2
[root@localhost ~]# echo $a
3
[root@localhost ~]# let b=$a*6
[root@localhost ~]# echo $b
18
[root@localhost ~]# let c=$b/2
[root@localhost ~]# echo $c
9
3.使用expr命令
类似于let命令,expr命令除了计算表达式,还将提供的表达式的值打印到标准输出。以及使用expr进行比较,增加变量值和查找字符串长度。
[root@localhost ~]# expr 3 + 5
8
[root@localhost ~]# expr 15 % 3
0
[root@localhost ~]# expr 5 \* 3
15
[root@localhost ~]# expr 4 - 1
3
[root@localhost ~]# expr 20 / 4
5
[root@localhost ~]# num=$((1+2))
[root@localhost ~]# echo $num
3
[root@localhost ~]# num1=$(expr $num + 3)
##必须有空格
[root@localhost ~]# echo $num1
6
需要注意的是使用expr命令时,数字与运算符之间要用空格隔开。并且”*“需用转义符“\”标注。
expr 还可以用来比较大小,当表达式求值为false时,expr将打印值0,否则打印1。
[root@localhost ~]# expr 5 == 3
0
[root@localhost ~]# expr 5 == 5
1
[root@localhost ~]# expr 8 != 6
1
[root@localhost ~]# expr 8 \> 6
1
[root@localhost ~]# expr 8 \< 6
0
[root@localhost ~]# expr 8 \<= 6
0
[root@localhost ~]# expr 6 \<= 6
1
###\<=有其中一个就行
同时expr可以用来查看字符串长度。
[root@localhost ~]# expr length "hello world"
11
[root@localhost ~]# echo "hellp world" | wc -L
11
更多expr用法请参照man expr。
4、使用bc命令
bc其实就是一个基于终端的计算机程序,有交互的非交互两种使用方式。
直接输入bc就可以进入交互模式,在里面输入表达式即可。
[root@localhost ~]# 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'.
1+1
2
5*6
30
92/3
30
6%2
0
(4+3*2)/3
3
同时也可以通过管道来使用
[root@localhost ~]# echo '3+4' |bc
7
[root@localhost ~]# echo "4*3" | bc
12
[root@localhost ~]# echo "4%3" | bc
1
[root@localhost ~]# echo "4/3" | bc
1
[root@localhost ~]# echo "20/3" | bc -l
6.66666666666666666666 ##-l用于精确到小数点后20位
5、使用awk命令
awk非常强大,功能也非常多,这里只介绍其用于算数运算。
[root@localhost ~]# awk 'BEGIN { a = 10;b = 3; print "(a - b)=",(a + b) }' (a - b)= 13 [root@localhost ~]# awk 'BEGIN { a = 10;b = 3; print "(a - b)=",(a - b) }' (a - b)= 7 [root@localhost ~]# awk 'BEGIN { a = 10;b = 3; print "(a * b)=",(a * b) }' (a * b)= 30 [root@localhost ~]# awk 'BEGIN { a = 10;b = 3; print "(a / b)=",(a / b) }' (a / b)= 3.33333 [root@localhost ~]# awk 'BEGIN { a = 10;b = 3; print "(a % b)=",(a % b) }' (a / b)= 1 ##空格只是为了好看,可以不添加。
6、使用factor命令
factor命令用于将整数分解分素数因子。
[root@localhost ~]# factor 242
242: 2 11 11
[root@localhost ~]# factor 345
345: 3 5 23