Shell常見知識(3)

來源:互聯網
上載者:User

一、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


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.