多重、複雜條件判斷式
在同一個資料的判斷中,如果該資料需要進行多種不同的判斷時,應該怎麼作?舉例來說,下面的指令碼中,我們只要進行一次 $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.判斷 $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} # 字典
4、Python_條件判斷(if else input)與迴圈
1、對比java語言中if/else java: if(true){ }else{ } python: if True: print("this is true code") else if False:
if、elif 條件判斷
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,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(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<=...<