一、if 條件語句 格式: if 條件表達式 then #當條件為真時執行以下語句 命令列表 else #為假時執行以下語句 命令列表 fi if 語句也可以嵌套使用 if 條件表達式1 then if 條件表達式2 then 命令列表 else if 條件表達式3 then 命令列表 else 命令列表 fi fi else 命令列表 fi 你可以進行多層嵌套 一個if語句一定要跟一個fi 表示該層條件結束 否則會造成語法錯誤結合前面講的 舉例如下: 這裡先講一個條件語句中用到的命令test 表示測試test後面的條件是否為真 if test -f "$1" then lpr $1 else if test -d "$1" then cd $1 lpr $1 else echo "$1不是文件或目錄" fi fi 以上的例子還可以改成如下所示 if test -f "$1" then lpr $1 elif test -d "$1" #elif 同else if then (cd $1;lpr $1) else echo "$1不是文件或目錄" fi 以上的例子不知您是否看懂是什麼意思嗎? 假如我們現在將這個例子保存為prfile chmod +x prfile 執行剛才的程序 ./prfile aaa 這個例子是檢查你的輸入的參數是否是一個文件 如果是就打印 如果是一個目錄 先轉目錄再打印 如果即不是文件也不是目錄給出提示
二、多重條件測試語句case 格式: case 字串 in 模式) 命令列表;; 模式) 命令列表;; .... esac 多重條件語句是以case 開始以esac結束 中間可以有多個條件列表 功能是測試字串和和裡面的模式有沒有匹配的,有就執行裡面的命令列表 模式也可以是*號 表示任意字串,每個模式裡面的最後要心;;雙引號結束,否則會發生語法錯誤。 現舉例如下: case $1 in *.c) cc $1 ;; *.txt) lpr $1 ;; *) echo "未知的類型" esac 假如將以上內容保存在文件abc中 chmod +x abc 執行 ./abc a.c 將會對文件a.c進行編譯 執行 ./abc readme.txt 將會把文件通過打印機 假如我將以上內容改一下,你是否會知道它的執行結果? case $1 in *) cc $1 ;; *.txt) lpr $1 ;; *.c) echo "未知的類型" esac