這一節主要介紹shell scripts 條件判斷式if...then
簡單的條件判斷式
if [ 條件判斷式 ]; then
當條件判斷式成立時,可以進行的指令工作內容;
fi <==將 if 反過來寫,就成為 fi 啦!結束 if 之意!
&& 代表and
|| 代表 or
所以,在使用中括號的判斷式中, && 及 || 就與指令下達的狀態不同了。舉例來說:
[ "${yn}" == "Y" -o "${yn}" == "y" ] 上式可替換為 [ "${yn}" == "Y" ] || [ "${yn}" == "y" ]
示例:交互式腳本經常遇到輸入Y/N
read -p "Please input (Y/N): " yn # 提示信息輸入Y/N
[ "${yn}" == "Y" ] || [ "${yn}" == "y" ] # if條件判斷輸入的值是"Y"或者"y",滿足條件則輸出"OK",並退出程序
[ "${yn}" == "N" ] || [ "${yn}" == "n" ] # 同上
執行結果如下:
多重、複雜條件判斷式
[ "$1" != "hello" ] # 如果第一個參數($1)不是hello,提示信息
elif 多重判斷(類似於java中的else if)
[ "$#" -lt 2 ] # 判斷參數個數($#)是否小於(-lt:less than)2,
執行結果如下:
在linux中我們一般使用netstat -tuln來探測正在監聽的網絡進程,下面是一些常見的端口號對應的服務
80: WWW
22: ssh
21: ftp
25: mail
111: RPC(遠端程序調用)
631: CUPS(打印服務功能)
假設我的主機有興趣要偵測的是比較常見的 port 21, 22, 25及 80 時,那我如何通過 netstat 去偵測我的主機是否有打開這四個主要的網絡服務端口呢?由於每個服務的關鍵字都是接在冒號“ : ”後面, 所以可以藉由擷取類似“ :80 ”來偵測的!那我就可以簡單的這樣去寫這個程序喔:
執行結果:
閱讀更多 Python小飛豬 的文章