linux-shell編程10:shell腳本判斷語句

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章