一 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" [email protected]
# 同時退出
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 [email protected]
# 第三方發郵件的smtp服務器地址
set smtp=smtps://smtp.qq.com:465
# 第三方發郵件的用戶名
set [email protected]
# 授權碼
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