1. 程式人生 > >多重、複雜條件判斷式

多重、複雜條件判斷式

 在同一個資料的判斷中,如果該資料需要進行多種不同的判斷時,應該怎麼作?舉例來說,下面的指令碼中,我們只要進行一次 $yn 的判斷就好 (僅進行一次 if ),不想要作多次 if 的判斷。

#!/bin/bash

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,intrrupt!"
 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

看下面的指令碼:

#!/bin/bash

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

好了,讓我們再來進行另外一個案例的設計。一般來說,如果你不希望使用者由鍵盤輸入額外的資料時, 可以使用

引數功能 ($1)!讓使用者在下達命令時就將引數帶進去! 現在我們想讓使用者輸入『 hello 』這個關鍵字時,利用引數的方法可以這樣依序設計:

    1.判斷 $1 是否為 hello,如果是的話,就顯示 "Hello, how are you ?";

    2.如果沒有加任何引數,就提示使用者必須要使用的引數下達法;

    3.而如果加入的引數不是 hello ,就提醒使用者僅能使用 hello 為引數。

整個程式的撰寫可以是這樣的:

#!/bin/bash
if [ "$1" == "hello" ]; then
     echo "Hello,how are you?"
elif [ "$1" == "" ]; then
     echo "You must input parameters,eg: $0 someword"
else
     echo "The only parameter you can use is 'hello',eg: $0 hello"
fi

測試結果:

[[email protected]_SYS~]$ sh decide.sh
You must input parameters,eg: decide.sh someword
[[email protected]_SYS~]$ sh decide.sh now
The only parameter you can use is 'hello',eg: decide.sh hello
[[email protected]_SYS~]$ sh decide.sh hello
Hello,how are you?
[[email protected]_SYS~]$

 [[email protected] ~]# netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address     Foreign Address   State
tcp        0      0 0.0.0.0:111       0.0.0.0:*         LISTEN
tcp        0      0 127.0.0.1:631     0.0.0.0:*         LISTEN
tcp        0      0 127.0.0.1:25      0.0.0.0:*         LISTEN
tcp        0      0 :::22             :::*              LISTEN
udp        0      0 0.0.0.0:111       0.0.0.0:*
udp        0      0 0.0.0.0:631       0.0.0.0:*

#封包格式 本地IP:埠 遠端IP:埠 是否監聽

上面的重點是『Local Address (本地主機的IP與埠對應)』那個欄位,他代表的是本機所啟動的網路服務! IP的部分說明的是該服務位於那個介面上,若為 127.0.0.1 則是僅針對本機開放,若是 0.0.0.0 或 ::: 則代表對整個 Internet 開放。 每個埠 (port) 都有其特定的網路服務,幾個常見的 port 與相關網路服務的關係是:

  • 80: WWW
  • 22: ssh
  • 21: ftp
  • 25: mail
  • 111: RPC(遠端程式呼叫)
  • 631: CUPS(列印服務功能)

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

#!/bin/bash
echo "Now, I will detect your Linux server's services!"
echo -e "The www, ftp, ssh, and mail will be detect! \n"

testing=$(netstat -tuln | grep ":80 ")          #偵測看80埠在否?
if [ "$testing" != "" ]; then
        echo "WWW is running in your system."
fi

testing=$(netstat -tuln | grep ":22 ")          #偵測看22埠在否?
if [ "$testing" != "" ]; then
        echo "SSH is running in your system."
fi

testing=$(netstat -tuln | grep ":21 ")           #偵測看21埠在否?
if [ "$testing" != "" ]; then
        echo "FTP is running in your system."
fi

testing=$(netstat -tunlp | grep ":25 ")         #偵測看25埠在否?
if [ "$testing" != "" ]; then
        echo  "Mail is running in your system."
fi

相關推薦

多重複雜條件判斷

 在同一個資料的判斷中,如果該資料需要進行多種不同的判斷時,應該怎麼作?舉例來說,下面的指令碼中,我們只要進行一次 $yn 的判斷就好 (僅進行一次 if ),不想要作多次 if 的判斷。 #!/bin/bash read -p "Please input (Y/N)" y

條件判斷

塊設備 作者 原創 責任 nbsp 法律 文件類型 大致 字符設備                               條件判斷式                                                 作者:尹正傑 版權聲明:原創作品,謝絕

if...elif...else...fi和case...esac的腳本條件判斷

pan 復雜 條件判斷 是否 mage inf example $2 區分 註意1: if 表達式和case 表達式的區別及什麽時候使用哪個要有明確的區分?   『 if .... then .... fi 』對於變量的判斷是以『比對』的方式來分辨的, 如果符合狀態就進行某

鳥哥的Linux私房菜讀書筆記--條件判斷

1、利用if  ...   then <1>單層、簡單的條件判斷式       if [   條件判斷式   ]; then   

用es6中map簡化複雜條件判斷

複雜邏輯判斷時需要寫很多if/else,程式碼可讀性較差,可以用es6新增的Map來簡化程式碼 列舉六種例項,逐步簡化 /** * 按鈕點選事件 * @param {number} status 活動狀態:1 開團進行中 2 開團失敗 3 商品售罄 4 開團成功 5 系統取消

Python基礎---布林運算子if條件判斷語句人機猜拳遊戲

# True:非零數字、非空字串、元組、字典、列表 a = 10 print(bool(a)) b = " " # 空格也是字串 print(bool(b)) c = [1, 2, 3] # 列表 print(bool(c)) d = {1: [3, 1, 2], 4: True} # 字典

4Python_條件判斷(if else input)與迴圈

1、對比java語言中if/else java: if(true){ }else{ }   python: if True:     print("this is true code") else if False:  

ifelif 條件判斷

sys rfi elif 8.0 file shutil tar pro out #!/usr/bin/python #-*- codinig: UTF-8 -*- from __future__ import print_function import os, sys

linux的中括號條件判斷易出現的問題及解決方法

在linux中,[ ]可以作為條件判斷式,結合if [ ];then.....fi使用。 在使用[]時,要注意,其中的每一部分都要用空格分開,中括號的前後都要有空格,if後面,then前面需要加空格! 以下面的程式為例:   1 #!/bin/bash   2 #該程式

15自學——Linux的學習進度與任務【bash編程之條件判斷

腳本執行 命令替換 返回 引用 任務 邏輯 與運算 腳本編程 num bash編程之條件判斷 bash編程之條件判斷:判定後續操作的前提條件是否滿足           1、條件判斷的常用判斷類型(bash內生的):               整數測試        

46求1+2+3+...+n,要求不能使用乘除法forwhileifelseswitchcase等關鍵字及條件判斷語句(A?B:C)。

closed else while spl 判斷語句 stat 條件 執行 ret 思路:循環或者遞歸都有個結束條件和執行條件。用&&短路與代替。 //短路與&&;就是只有前一個條件滿足才可以去判斷第二個條件。 //遞歸的出口

Java關於條件判斷練習--統計一個src文件下的所有.java文件內的代碼行數(註釋行空白行不統計在內)

stat 註釋 string 字符 條目 pub isf exc system 要求:統計一個src文件下的所有.java文件內的代碼行數(註釋行、空白行不統計在內)   分析:先封裝一個靜態方法用於統計確定的.java文件的有效代碼行數。使用字符緩沖流讀取文件,首先判斷是

Javascript利用與或運算符優先級實現if else條件判斷表達

與或 等於 規則 alert 判斷表達式 三目運算 返回值 res 兩個 <script type="text/javascript"> /*************************************************************

Javascript 籬條件判斷

sna scrip 對象 ... javascrip 條件判斷 define ava 錯誤 null 沒有任何的屬性值,並且無法獲取其實體(existence)值。所以 null.property 返回的是錯誤(error)而不是 undefined 。 考慮下面的代碼 i

hive數據類型轉換字符串函數條件判斷

string decimal tails clas sele 我們 浮點 ngs ble http://blog.csdn.net/yimingsilence/article/details/70057638 數據類型轉換 同Java語言一樣,Hive也包括 隱式

Python基礎---循環--條件判斷(while-for-if-elif-else)

Python基礎---循環--條件判斷!!!語句!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1.代碼實例: #if語句#!/usr/bin/python3#_*_coding:utf-8_*_num = 10if num == 10: pri

條件判斷語句:文件數值字符串

shell 條件 測試 可以用test或者[]測試一個條件是否成立,如果測試結果為真,則該命令退出狀態為0,如果為假,狀態為1文件測試格式:test option file 或者[ option file ]-b file 塊文件-c file 字符文件-d file 目錄-e fi

復習python(條件判斷循環字符串格式化)

語句塊 有一種 str 條件 字符串格式化 %s 循環 color username 1、條件判斷: 只有一種 if: *** elif:#多個條件加elif,想加幾個加幾個 **** else: **** python裏靠縮進來表示表示語句塊,見到

Java 控制語句:循環條件判斷

分支語句 就會 業務 代碼 條件 循環 ont 控制語句 但是 程序設計中的控制語句主要有三種:順序、分支和循環。我們每天寫的代碼,除了業務相關,裏面會包含大量的控制語句。但是控制語句的基本使用,是否有些坑我們需要避免,以及一些常見的規範我們是否遵守了呢,我們來簡

演算法導論 第二章:演算法入門 筆記 (插入排序迴圈不變演算法分析最好和最壞時間複雜選擇排序分治法合併排序)

插入排序: 排序問題的定義如下: 輸入:N個數{a1, a2,..., an }。 輸出:輸入序列的一個排列{a'1 ,a'1 ,...,a'n },使得a'n <=a' n<=...<