Linux之shell scripts 學習(最重要部分)

這一節主要介紹shell scripts 條件判斷式if...then

簡單的條件判斷式

if [ 條件判斷式 ]; then

當條件判斷式成立時,可以進行的指令工作內容;

fi <==將 if 反過來寫,就成為 fi 啦!結束 if 之意!

&& 代表and

|| 代表 or

所以,在使用中括號的判斷式中, && 及 || 就與指令下達的狀態不同了。舉例來說:

[ "${yn}" == "Y" -o "${yn}" == "y" ] 上式可替換為 [ "${yn}" == "Y" ] || [ "${yn}" == "y" ]

示例:交互式腳本經常遇到輸入Y/N

Linux之shell scripts 學習(最重要部分)

Y/N交互式腳本

read -p "Please input (Y/N): " yn # 提示信息輸入Y/N

[ "${yn}" == "Y" ] || [ "${yn}" == "y" ] # if條件判斷輸入的值是"Y"或者"y",滿足條件則輸出"OK",並退出程序

[ "${yn}" == "N" ] || [ "${yn}" == "n" ] # 同上

執行結果如下:

Linux之shell scripts 學習(最重要部分)

Y/N交互式腳本執行結果

多重、複雜條件判斷式

Linux之shell scripts 學習(最重要部分)

if...then...elif..else

[ "$1" != "hello" ] # 如果第一個參數($1)不是hello,提示信息

elif 多重判斷(類似於java中的else if)

[ "$#" -lt 2 ] # 判斷參數個數($#)是否小於(-lt:less than)2,

執行結果如下:

Linux之shell scripts 學習(最重要部分)

if...then...elif..else執行結果

在linux中我們一般使用netstat -tuln來探測正在監聽的網絡進程,下面是一些常見的端口號對應的服務

80: WWW

22: ssh

21: ftp

25: mail

111: RPC(遠端程序調用)

631: CUPS(打印服務功能)

假設我的主機有興趣要偵測的是比較常見的 port 21, 22, 25及 80 時,那我如何通過 netstat 去偵測我的主機是否有打開這四個主要的網絡服務端口呢?由於每個服務的關鍵字都是接在冒號“ : ”後面, 所以可以藉由擷取類似“ :80 ”來偵測的!那我就可以簡單的這樣去寫這個程序喔:

Linux之shell scripts 學習(最重要部分)

shell scripts探測網絡監聽端口

執行結果:

Linux之shell scripts 學習(最重要部分)

shell scripts探測網絡監聽端口腳本執行結果


分享到:


相關文章: