shell條件判斷式


條件判斷式

只要講到『程序』的話,那么條件判斷式,亦即是『 if then 』這種判別式肯定一定要學習的! 因為很多時候,我們都必須要依據某些數據來判斷程序該如何進行。

if .... then

這個 if .... then 是最常見的條件判斷式了~簡單的說,就是當符合某個條件判斷的時候, 就予以進行某項工作就是了。這個 if ... then 的判斷還有多層次的情況!我們分別介紹如下:

 

單層、簡單條件判斷式

如果你只有一個判斷式要進行,那么我們可以簡單的這樣看:

if [ 條件判斷式 ]; then
    當條件判斷式成立時,可以進行的命令工作內容;
fi   <==將 if 反過來寫,就成為 fi 啦!結束 if 之意!

例子:

[root@www scripts]# cp sh06.sh sh06-2.sh  <==用改的比較快!
[root@www scripts]# vi sh06-2.sh
#!/bin/bash
# Program:
#       This program shows the user's choice
# History:
# 2005/08/25    VBird   First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

read -p "Please input (Y/N): " yn

if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
    echo "OK, continue"
    exit 0
fi
if [ "$yn" == "N" ] || [ "$yn" == "n" ]; then
    echo "Oh, interrupt!"
    exit 0
fi
echo "I don't know what your choice is" && exit 0

 

多重、復雜條件判斷式

簡單語法

# 一個條件判斷,分成功進行與失敗進行 (else)
if [ 條件判斷式 ]; then
    當條件判斷式成立時,可以進行的命令工作內容;
else
    當條件判斷式不成立時,可以進行的命令工作內容;
fi

更復雜的情況,則可以使用這個語法:

# 多個條件判斷 (if ... elif ... elif ... else) 分多種不同情況運行
if [ 條件判斷式一 ]; then
    當條件判斷式一成立時,可以進行的命令工作內容;
elif [ 條件判斷式二 ]; then
    當條件判斷式二成立時,可以進行的命令工作內容;
else
    當條件判斷式一與二均不成立時,可以進行的命令工作內容;
fi

例子

[root@www scripts]# cp sh06-2.sh sh06-3.sh
[root@www scripts]# vi sh06-3.sh
#!/bin/bash
# Program:
#       This program shows the user's choice
# History:
# 2005/08/25    VBird   First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

read -p "Please input (Y/N): " yn

if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
    echo "OK, continue"
elif [ "$yn" == "N" ] || [ "$yn" == "n" ]; then
    echo "Oh, interrupt!"
else
    echo "I don't know what your choice is"
fi

 

利用 case ..... esac 判斷

他的語法如下:

case  $變量名稱 in   <==關鍵字為 case ,還有變量前有錢字號
  "第一個變量內容")   <==每個變量內容建議用雙引號括起來,關鍵字則為小括號 )
    程序段
    ;;            <==每個類別結尾使用兩個連續的分號來處理!
  "第二個變量內容")
    程序段
    ;;
  *)                  <==最后一個變量內容都會用 * 來代表所有其他值
    不包含第一個變量內容與第二個變量內容的其他程序運行段
    exit 1
    ;;
esac                  <==最終的 case 結尾!『反過來寫』思考一下!

例子

[root@www scripts]# vi sh09-2.sh
#!/bin/bash
# Program:
#     Show "Hello" from $1.... by using case .... esac
# History:
# 2005/08/29    VBird    First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

case $1 in
  "hello")
    echo "Hello, how are you ?"
    ;;
  "")
    echo "You MUST input parameters, ex> {$0 someword}"
    ;;
  *)   # 其實就相當於萬用字節,0~無窮多個任意字節之意!
    echo "Usage $0 {hello}"
    ;;
esac

 

轉自 http://vbird.dic.ksu.edu.tw/linux_basic/0340bashshell-scripts_4.php#sh06


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM