1 算术运算¶
1.1 分类¶
用于整数运算的
1. (())
2. let
3. expr
4. $[]
用于小数运算的
1. bc
2. awk
1.1.1 双小括号(())¶
1.案例
((i=i+1))
i=$((i+1))
((8>7&&5==5))
echo $((2+1))
ubuntu@4c16g:~$ i=1
ubuntu@4c16g:~$ echo $i
1
ubuntu@4c16g:~$ ((i=i+1))
ubuntu@4c16g:~$ echo $i
2
ubuntu@4c16g:~$ i=$((i+1))
ubuntu@4c16g:~$ echo $i
3
2.数值计算脚本
vim calculate.sh
#!/bin/bash
#说明:运行脚本,输入数1,输入运算符,输入数2,得到结果
#1.提示函数
print_usage(){
printf "please enter an integer\n"
exit 1
}
#2.接收值1
read -p "please input your number:" firstnum
#3.判断输入的是否是纯数字
if [ -n `echo $firstnum|sed 's/[0-9]//g'` ];then
print_usage
fi
#4.接收运算符
read -p "please input an operator:" operator
#5.对运算符判断,只能输入加减乘除
if [ "${operator}" != "+" ] && [ "${operator}" != "-" ] && [ "${operator}" != "*" ] && [ "${operator}" != "/" ];then
echo "only can input +|-|*|/"
exit 2
fi
#6.接收值2,并判断
read -p "please input second number:" secondnum
if [ -n `echo $secondnum|sed 's/[0-9]//g'` ];then
print_usage
fi
#7.计算
echo "${firstnum}${operator}${secondnum}=$((${firstnum}${operator}${secondnum}))"
1.1.2 let命令¶
let i=i+2
echo $i
nginx服务检测脚本
#!/bin/bash
CheckUrl(){
#1.定义变量
timeout=5
fails=0
success=0
#2.循环检测url
while true
do
wget --timeout=${timeout} --tries=1 http://pythonav.cn -q -O /dev/null
if [ $? -ne 0 ];then
let fails=fails+1
else
let success+=1
fi
#success>=1,说明url没问题
if [ $success -ge 1 ];then
echo "this url's status is good"
exit 0
fi
if [ ${fails} -ge 2 ];then
echo "the url must be dead!!!"
exit 1
fi
done
}
#调用函数
CheckUrl
小知识:shift+% 可以快速找到另一半花括号{}
# 失败了!!!!!!!!!后面看完再回来改一下!
#!/bin/bash
# 加上$1
$url=$1
CheckUrl(){
#1.定义变量
timeout=5
fails=0
success=0
#2.循环检测url
while true
do
wget --timeout=${timeout} --tries=1 http://$1 -q -O /dev/null
if [ $? -ne 0 ];then
let fails=fails+1
else
let success+=1
fi
#success>=1,说明url没问题
if [ $success -ge 1 ];then
echo "this url's status is good"
exit 0
fi
if [ ${fails} -ge 2 ];then
echo "the url must be dead!!!"
exit 1
fi
done
}
#调用函数
CheckUrl
1.1.3 expr命令¶
1.实践
#注意:1.要有空格 2.最好加上反斜杠
expr 5 \+ 3
expr 5 \* 3
expr 5 \> 3
2.统计字符个数
#统计所有字符个数
expr 1234567 ":" ".*"
#统计到指定位置的字符个数
expr abc.def ":" ".*\.de"
3.统计字符串长度
expr length $var
4.判断文件名后缀脚本
vim is_jpg_file.sh
#!/bin/bash
if expr "$1" ":" ".*\.jpg" &> /dev/null;then
echo "yes,this is *.jpg file"
else
echo "no,this is not *.jpg file!!!"
fi
bash is_jpg_file.sh aaaaaaaaa.jpg
5.找出单词长度小于5的脚本
vim word_length.sh
#!/bin/bash
for str1 in I am yu chao,I teach you to learn linux.
do
if [ `expr length $str1` -lt 5 ];then
echo $str1
fi
done
1.1.4 bc命令¶
yum install bc -y
echo "4.5*4"|bc
num=5
result=`echo $num*4`|bc
echo $result
1.计算1~1000的和
echo {1..100}|tr " " "+"|bc
echo $((`seq -s "+" 100`))
#注意:expr的参数必须有空格!!!
seq -s " + " 100 | xargs expr
1.1.5 awk计算¶
echo "1.1 2.2" | awk '{print $1+2*$2}'
1.1.6 中括号[]¶
num=5
res=$[num%4]
echo $res
最后更新:
2022-02-19 13:59:07