一 let运算命令
(1)let运算命令的'语法格式':let 赋值表达式-->let a=3+5
let'赋值表达式'的功能等同于--->'((赋值表达式))'
'let i=i+2' ==>等价 '((i=i+2))'
'关键':后者的效率更高
取消变量
unset 环境变量
unset JAVA_HOME
不管是临时环境变量还是系统环境变量('只对当前终端起作用')
经典案例:监控Web服务状态,如果访问两次均失败,则报警
#!/bin/bash
# (1)写成一个函数,方便后续调用
CheckUrl(){
# 1)超时检测时间-->定义wget访问的超过时间,没有返回数值则表示失败,则退出
timeout=5
# 2)初始化访问网站失败所记录次数,定义:失败达到两次,则发送邮件报警
fails=0
# 3)初始化访问网站成功所记录次数,定义:只要在规定的时间内,成功一次(记录为1)则表示成功,退出脚本
success=0
# 4)死循环-->持续监测-->成功,则exit退出
while true
do
# (1)wget访问自己的一个博客
wget --timeout=${timeout} --tries=1 https://harbor.wangzj.club -q -O /dev/null
# (2)根据命令回传码判断网站的存活状态
if [ $? -ne 0 ];then
# 将访问失败的次数加1
let fails+=1
else
# 返回值不为0则不成立,即访问成功
let success+=1
fi
# (2)如果成功的次数大于1等于1-->一般是等于1(其实可以写到上面success+=1下面)
if [ $success -ge 1 ];then
# 下面是为了观察方便,打印标识-->可以加上颜色
echo "Your Website is alive"
# 退出脚本
exit 0
fi
# (3)如果失败次数大于等于2-->实际等于2,则报警
if [ $fails -ge 2 ];then
# 定义描述信息
Critical="Your Website is dead"
# 输出并发送邮件警报;需要单独配置自己的邮箱地址
# v的含义-->将 Mail 程序置为详细方式。显示传送到用户终端的详细信息。
# s含义-->标题
echo $Critical|tee|mail -v -s "$Critical" 1125246519@qq.com
# 同时退出
exit 2
fi
done
}
# 调用函数
CheckUrl
发送邮件一个小脚本
[root@ecs-TmQV ~]# cat sendmail-to-qq.sh
#!/bin/bash
# (1)获取qq的授权码
# (2)安装发送邮件的软件
yum install mailx -y
# (3)重新定义mail的配置文件
echo \
"# 对方收到邮件时显示的发件人
set from=xxxxxxxx@qq.com
# 第三方发邮件的smtp服务器地址
set smtp=smtps://smtp.qq.com:465
# 第三方发邮件的用户名
set smtp-auth-user=xxxxxxxx@qq.com
# 授权码
set smtp-auth-password=mspxxxxxxiogeeb
# 认证
set ssl-verify=ignore
set nss-config-dir=/root/.certs
# 第三方发邮件的smtp服务器地址
set smtp-auth=login" >> /etc/mail.rc
echo "状态码是$?"
#命令生成一个整数-->防止出现报错-->'Error in certificate: Peer’s certificate issuer is not recognized.'
mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs
测试效果
参考文档
二 expr命令
expr命令的基本用法
expr既可以用于'整数运算',也可以用于'相关字符串长度'、'匹配'等的运算处理
1)expr 用于计算
语法:expr Expression ==>'表达式中可包含变量'
expr 1 + 1
# *在shell中有特殊含义-->统配符,这里转移,表示运算符号
expr 2 \* 3
注意事项
运算符及用于计算的'数字左右'都'至少有一个空格',否则会'报错'
使用乘号时,必须用'反斜线'进行'转义'
2)expr 配合变量计算
expr 在 shell 中可'配合变量进行计算',但需要用'反引号或 $()' 将计算表达式'括起来'
i=5
j=$(expr $i + 5)
echo $j
3)判断变量或字符串是否为整数
'原理':利用以 expr 做计算时'变量'或'字符串必须是整数的规则',把一个变量或字符串'位置变量'和一个已知的整数(非0)相加,看命令返回的值是否为0
'结果':如果是0,就认为做加法的变量或字符串为整数,否则就不是整数
报错:非整数参数
#!/bin/bash
# 功能通过传参判断输出的内容是否为整数
# cat expr.sh
expr $1 + 1 > /dev/null
[ $? -eq 0 ] && echo int || echo chars
4)expr特殊用法
(1)判断文件扩展名是否复合要求
# 是否是以sh结尾的
expr "text.sh" : ".*\.sh" &>/dev/null && echo "yes" ||echo "no"
".*\.文件后缀"---> ':' 号的作用
(2)计算字符串的长度
小需求:统计语句中字符数不大于6的单词,并输出
#!/bin/bash
for i in I am wzj java welcome everyone to our training
do
if [ `expr length $i` -le 6 ];then
echo $i
fi
done