shell腳本控制語句
- 判斷語句使用 if case
- 循環語句的使用 for while
判斷語句
判斷語句使得我們腳本更加具有活性,通過判斷,可以分析當前系統環境,條件允許做某些事情,條件不允許做某些事情
shell腳本中判斷可以使用if語句和case語句
if語句
常用語法格式,
條件:判斷條件可以使用test命令,可以使用[]測試
動作:命令序列,可以是一條命令,可以是多條命令
#語法格式一:
if 條件
then
命令序列
fi
"""
if age>=18
then
echo "可以去網吧啦"
else
echo "你媽媽叫你回家吃飯"
fi
"""
#語法格式二
if 條件
then
命令序列
else
命令序列
#語法格式三
if 條件
then
命令序列
elif 條件
then
命令序列
elif 條件
then
命令序列
.
.
else
命令序列
fi
if語句案例
#要求用戶輸入密碼,判斷密碼是否正確
#!/bin/bash
#read passwd and test.
read -p "input a password:" passwd
if [ "$passwd" == "123123" ]
then
echo "the password OK!"
fi
read -p "input a password:" passwd
if [ "$passwd" == "123123" ];then
echo "the password OK!"
fi
#密碼錯誤,顯示error,
#!/bin/bash
#read passwd and test.
read -p "input a password:" passwd
if [ "$passwd" == "123123" ];then
echo "the password OK!"
else
echo "the passwd ERROR!"
fi
#判斷當前用戶是否是root用戶,如果是,則執行tar備份/etc/目錄
#!/bin/bash
#判斷當前用戶是否是root用戶,是備份etc目錄
if [ "$(id -u)" -eq "0" ]
then
tar -czvf /root/etc.tar.gz /etc &> /dev/null
echo "backup successful!!!"
else
echo "plese root login~~~"
fi
#讀參數 $1 判斷成績
成績小於60 顯示 回家等着捱揍吧
成績大於或等於60但小於70 呵呵噠,算你應用及格啦
成績大於等於70小於80 顯示小夥還可以
成績大於等於80小於90 顯示牛逼啊
成績大於等於90 上天了啊
#!/bin/bash
#test score print to level
if [ $1 -ge 90 ];then
echo "上天了昂"
elif [ $1 -ge 80 ];then
echo "牛逼啊"
elif [ $1 -ge 70 ];then
echo "小夥子還可以啊"
elif [ $1 -ge 60 ];then
echo "呵呵噠,算你走運"
elif [ $1 -eq 100 ];then
echo "哥們,給別人留點活路吧~~"
else
echo "等着回家捱揍吧~~"
fi
case語句
在shell腳本中,除了使用if語句進行判斷外,還可以使用case語句進行判斷
case語句實質是if多重判斷語句的替換吧,易讀易寫
case語句通過檢查模式與變量是否相匹配,如果匹配則執行case命令序列
*)爲case默認操作,當所有的模式都未匹配時,則執行這個
模式可以使用通配符
模式下的命令序列必須要用;;結尾,代表該模式下的命令結束
case esac
#case語句格式一
case $變量名稱 in
模式1)
命令序列
;;
模式2)
命令序列
;;
.
.
模式N)
命令序列
;;
*)
esac
#case語句格式2
case $變量名稱 in
模式1 | 模式2)
命令序列
;;
模式2 | 模式3)
命令序列
;;
.
.
*)
esac
case語句案例
#根據時間備份/var/log目錄
僅僅備份週一,週四的數據
#!/bin/bash
DATE=$(date +%a)
TIME=$(date +%Y%m%d)
case $DATE in Mon | Thu)
tar -czvf /root/${TIME}_log_tar.gz /var/log &> /dev/null
echo "${TIME}的日誌備份成功~~~"
;;
*)
echo "Today is ${DATE}"
esac
#火狐瀏覽器自動啓動腳本
支持start stop restart
#!/bin/bash
case $1 in
start)
firefox &
;;
stop)
pkill firefox
;;
restart)
pkill firefox
firefox &
;;
*)
echo "Usage:$0 (start|stop|restart)"
esac
#根據用戶輸入的參數,判斷並返回相應的結果
如果輸入字符:提示你輸入的是字符
如果輸入數字,提示輸入的是數字
如果提示error
#!/bin/bash
case $1 in
[a-z]|[A-Z])
echo "you have type a char:$1"
;;
[[:digit:]]) #判斷$1是否是數字
echo "you have type a number:$1"
;;
*)
echo "你輸入的是啥啊"
esac