echo $((数学运算表达式))
# 形式一
[root@kai scripts]# echo $((1 + 1))
2
[root@kai scripts]# echo $((2*7-3/6+5))
19
# 形式二
[root@kai scripts]# ((kai=2*8))
[root@kai scripts]# echo $kai
16
# 形式三
[root@kai scripts]# znix=$((2*7-3/6+5))
[root@kai scripts]# echo $znix
19
延伸产物(重要)
i++ 自增1
i-- 自减1
++i
--i
示例:
[root@kai scripts]# i=1
[root@kai scripts]# echo $((i++))
1
[root@kai scripts]# echo $((i++))
2
[root@kai scripts]# echo $((i--))
3
[root@kai scripts]# echo $((i--))
2
[root@kai scripts]# echo $((i--))
1
[root@kai scripts]# echo $((++i))
1
[root@kai scripts]# echo $((++i))
2
[root@kai scripts]# echo $((++i))
3
[root@kai scripts]# echo $((--i))
2
[root@kai scripts]# echo $((--i))
1
[root@kai scripts]# echo $((--i))
0
记忆方法:++,--
变量a在前,表达式的值为a,然后a自增或自减,变量a在符号后,表达式值自增或自减,然后a值自增或自减。
let命令
[root@kai scripts]# i=1
[root@kai scripts]# i=i+1
[root@kai scripts]# echo $i
i+1
[root@kai scripts]# i=1
[root@kai scripts]# let i=i+1
[root@kai scripts]# echo $i
2
expr 命令
1.整数计算
2.判断扩展名
3.判断输入是否为整数,非整数返回值为2
4.计算变量的长度
[root@kai scripts]# expr 1+1
1+1
[root@kai scripts]# expr 1 + 1
2
[root@kai scripts]# expr 1 * 1expr: 语法错误
[root@kai scripts]# expr 1 \* 1
1
非整数返回值为2 示例:正常计算返回值为0表示正常,特殊情况:如果计算结果为0,那么返回值结果就为1
[root@kai scripts]# expr 1 + 1
2
[root@kai scripts]# echo $?
0
[root@kai scripts]# expr -1 + 1
0
[root@kai scripts]# echo $?
1
[root@kai scripts]# expr a + 1
expr: 非整数参数
[root@kai scripts]# echo $?
2
$[ ]运算符
[root@kai scripts]# echo $[1+2]
3
[root@kai scripts]# echo $[1-2]
-1
[root@kai scripts]# echo $[1*2]
2
[root@kai scripts]# echo $[1/2]
0
typeset命令进行运算
[root@kai scripts]# typeset -i A=2017 B=2018
[root@kai scripts]# A=A+B
[root@kai scripts]# echo $A
4035
bc 命令
# 安装 bc 依赖于base源
[root@kai scripts]# yum -y install bc
交互模式测试bc命令
[root@kai scripts]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
1+1
2
[root@kai scripts]# echo 1+1.1|bc
2.1
免交互模式测试bc命令
小数保留6位:
[root@kai scripts]# echo 'scale=6;1/3'|bc
.333333
python 命令
[root@kai scripts]# file `which yum `
/usr/bin/yum: Python script, ASCII text executable
[root@kai scripts]# python
>>> import os
>>> os.system('df -h')
>>> 1+1.1
2.1
>>>exit()
awk 命令
[root@kai ~]# echo "7.7 3.8"|awk '{print ($1-$2)}'
3.9
[root@kai ~]# echo "358 113"|awk '{print ($1-3)/$2}'
3.14159
[root@kai ~]# echo "3 9"|awk '{print ($1+3)*$2}'
54
[root@backup scripts]# awk BEGIN'{print 1.2+3.3}'
4.5
实现脚本:
[root@kai scripts]# cat jishuanqi.sh
#!/bin/bash
#############################################################
# File Name: jishuanqi.sh
# Version: V1.0
# Author: kai
# Organization: http://blog.znix.top
# Created Time : 2017-12-06 08:57:13
# Description:
#############################################################
read -p "请输入第一个整数:" a
read -p "请输入第二个整数:" b
echo $a + $b =$(($a+$b))
echo $a - $b =$(($a-$b))
echo $a \* $b =$(($a*$b))
echo $a / $b =$(($a/$b))
脚本执行过程:
[root@kai scripts]# sh jishuanqi.sh
请输入第一个整数:12
请输入第二个整数:12
12 + 12 =24
12 - 12 =0
12 * 12 =144
12 / 12 =1
精简方法
[root@kai scripts]# vim jishuanqi2.sh
#!/bin/bash
#############################################################
# File Name: jishuanqi2.sh
# Version: V1.0
# Author: kai
# Organization: http://blog.znix.top
# Created Time : 2017-12-06 15:02:41
# Description:
#############################################################
echo $(($1))
脚本执行过程:
[root@kai scripts]# sh jishuanqi2.sh 1+1
2
[root@kai scripts]# sh jishuanqi2.sh 1*9
9
脚本内容
sed -s "+" :-s指定分割
[root@kai scripts]# vim yunshuan.sh
#!/bin/bash
#############################################################
# File Name: yunshuan.sh
# Version: V1.0
# Author: kai
# Organization: http://blog.znix.top
# Created Time : 2017-12-06 09:40:31
# Description:
#############################################################
Num=`seq -s + 1 10`
echo $Num=$(($Num))
for的写法:
#!/bin/bash
for i in {1..100}
do
# ((sum=sum+i))
# sum=$(($sum+i))
((sum+=i))
done
echo $(seq -s "+" 100)=$sum
C的写法:
for((i=1;i<=100;i++))
do
((sum+=i))
done
while的写法:
#!/bin/bash
i=1
while ((i<=100))
do
((sum+=i))
((i+=1))
done
echo $(seq -s "+" 100)=$sum
脚本执行结果
[root@kai scripts]# sh yunshuan.sh
1+2+3+4+5+6+7+8+9+10=55
参考文档:
http://blog.csdn.net/lansesl2008/article/details/20558369
https://www.abcdocker.com/abcdocker/269
http://blog.51cto.com/life2death/1657133
http://blog.51cto.com/oldboy/1867160 #企业shell面试题
小伙伴们可以关注我的博客号:GeorgeKai,点击“阅读原文”进入
欢迎转发 ▶▶▶