日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
詳解Shell腳本的條件測試和if條件語句

本篇文章重點(diǎn)為大家講解一下shell腳本的條件測試操作,并通過正確使用if語句,使Shell腳本具有一定的“判斷”能力,以根據(jù)不同的條件來完成不同的管理任務(wù)。

創(chuàng)新互聯(lián)建站專注于蛟河企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城開發(fā)。蛟河網(wǎng)站建設(shè)公司,為蛟河等地區(qū)提供建站服務(wù)。全流程按需搭建網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

一、條件測試操作

要使Shell腳本程序具備一定的“智能”,面臨的第一個(gè)問題就是如何區(qū)分不同的情況以確定執(zhí)行何種操作。Shell環(huán)境根據(jù)命令執(zhí)行后的返回狀態(tài)值(¥?)來判斷是否執(zhí)行成功,當(dāng)返回值為0時(shí)表示成功,否則(非0值)表示失敗或異常。使用專門的測試工具——test命令,可以對(duì)特定條件進(jìn)行測試,并根據(jù)返回值來判斷條件是否成立(返回值為0表示條件成立)。

使用test測試命令時(shí),包括以下兩種形式:

test 條件表達(dá)式
[ 條件表達(dá)式 ]

這兩種方式的作用完全相同,但通常后一種形式更為常用,需要注意的是,方括號(hào)“[“ 或 ”]”與條件表達(dá)式之間需要至少一個(gè)空格進(jìn)行分隔。

1、文件測試:

  • -d:測試是否為目錄(Directory);
  • -e:測試文件或目錄是否存在(Exist);
  • -f:測試是否為文件(File);
  • -r:測試當(dāng)前用戶是否有權(quán)限讀取(Read);
  • -w:測試當(dāng)前用戶是否有權(quán)限寫入(Write);
  • -x:測試是否設(shè)置有可執(zhí)行(Excute)權(quán)限;

執(zhí)行條件測試操作以后,通過預(yù)定義變量?可以獲得測試命令的返回狀態(tài)值,從而判斷該條件是否成立。例如,執(zhí)行以下操作可以測試目錄是否存在,如果返回值?為0,表示存在此目錄,否則表示不存在或者雖然存在但不是目錄。

[root@CentOS01 ~]# test -d /boot       
[root@centos01 ~]# echo $?            
0                      
  

若測試的條件不成立,則測試操作的返回值將不為0(通常為1).

[root@centos01 ~]# test -d /ertec         
[root@centos01 ~]# echo $?          
1         
  

2、整數(shù)值比較:

  • -eq:第一個(gè)數(shù)等于(Equal)第二個(gè)數(shù);
  • -ne:第一個(gè)數(shù)不等于(Not Equal)第二個(gè)數(shù);
  • -gt:第一個(gè)數(shù)大于(Greater Than)第二個(gè)數(shù);
  • -lt:第一個(gè)數(shù)小于(Lesser Than)第二個(gè)數(shù);
  • -le:第一個(gè)數(shù)小于或等于(Lesser or Equal)第二個(gè)數(shù);
  • -ge:第一個(gè)數(shù)大于或等于(Greater or Equal)第二個(gè)數(shù);

整數(shù)值比較在Shell腳本編寫中的應(yīng)用較多。例如,用來判斷已登錄用戶數(shù)量、開啟進(jìn)程數(shù)、磁盤使用率是否超標(biāo),以及軟件版本號(hào)是否符號(hào)要求等。實(shí)際 使用時(shí),往往會(huì)通過變量引用、命令替換等方式來獲取一個(gè)數(shù)值。

3、字符串比較:

  • =:第一個(gè)字符串與第二個(gè)字符串相同。
  • !=:第一個(gè)字符串與第二個(gè)字符串不相同,其中 “ !”表示取反。
  • -z:檢查字符串是否為空,對(duì)于未定義或賦予空值的變量將是為空串。

[root@centos01 ~]# a=1
[root@centos01 ~]# b=2
[root@centos01 ~]# [ $a = $b ] && echo "yes"   
           
  
[root@centos01 ~]# a=1
[root@centos01 ~]# b=2
[root@centos01 ~]# [ $a != $b ] && echo "yes"   
yes        
  

4、邏輯測試:

  • &&:邏輯與,表示“而且”,只有當(dāng)前后兩個(gè)條件都成立時(shí),整個(gè)測試命令的返回值才為0(結(jié)果成立),使用test命令測試時(shí),“&&”可以使用“-a”代替。
  • ||:邏輯或,表示“或者”,只要前后兩個(gè)條件有一個(gè)成立,整個(gè)測試命令返回的值即為0(結(jié)果成立)。使用test命令測試時(shí)可以使用“-o”代替。
  • !:邏輯否,表示“不”,只有當(dāng)條件不成立時(shí),整個(gè)測試命令返回的值才為0(結(jié)果成立)。

示例如下:

[root@centos01 ~]# a=100
[root@centos01 ~]# [ $a = 100 ] && [ $a != 50 ] && echo "yes"  
yes      
  
[root@centos01 ~]# c=100
[root@centos01 ~]# [ $a = 100 ] || [ $a -ge 50 ] && echo "yes"    
yes     
  

二、使用if條件語句

1、單分支if語句

if語句的“分支”指的是不同測試結(jié)果所對(duì)應(yīng)的執(zhí)行語句(一條或多條)。對(duì)于單分支的選擇結(jié)構(gòu),只有在“條件成立”時(shí)才會(huì)執(zhí)行相應(yīng)的代碼,否則不會(huì)執(zhí)行任何操作。單分支if語句的語法格式如下所示:

單分支if語句示例:

[root@centos01 ~]# cd /usr/src/ppp      
-bash: cd: /usr/src/ppp: 沒有那個(gè)文件或目錄  
  
[root@centos01 ~]# vim if_dan.sh   
#!/bin/bash            
mount="/usr/src/ppp"       
  
if [ ! -d $mount ]            
  
then                  
  
       mkdir -p $mount            
fi             
  
[root@centos01 ~]# chmod +x if_dan.sh        
[root@centos01 ~]# ./if_dan.sh          
[root@centos01 ~]# cd /usr/src/ppp/  
[root@centos01 ppp]# ls

2、雙分支if語句

對(duì)于雙分支的選擇結(jié)構(gòu),要求針對(duì)“條件成立” “條件不成立”兩種情況分別執(zhí)行不同的操作。雙分支if語句的語法格式如下所示:

雙分支if語句示例:

[root@centos01 ~]# vim if_shuang.sh  
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null 
  
if [ $? -eq 0 ]         
  
then              
  
   echo "Host:$1 is UP!!!"
else                
  
   echo "Host:$1 is DOWN!!!"
fi     
  
[root@centos01 ~]# chmod +x if_shuang.sh         
[root@centos01 ~]# ./if_shuang.sh 192.168.100.10       
Host:192.168.100.10 is UP!!!     
  
[root@centos01 ~]# ./if_shuang.sh 192.168.100.103   
Host:192.168.100.103 is DOWN!!!           
  

3、多分支if語句

由于if語句可以根據(jù)測試結(jié)果的成立、不成立分別執(zhí)行操作,所有能夠嵌套使用,進(jìn)行多次判斷。例如,首先判斷某學(xué)生的得分是否及格,若及格則再次判斷是否高于90分等。多分支if語句的語法格式如下:

多分支if語句示例:

[root@centos01 ~]# vim if_duo.sh     
#!/bin/bash
read -p "請(qǐng)輸入考試成績:" insert
if [ $insert -ge 85 ] && [ $insert -le 100 ]   
  
  then
       echo "恭喜您考試成績?yōu)閮?yōu)秀!??!"
elif [ $insert -ge 70 ] && [ $insert -le 84 ]  
  
  then
       echo "恭喜您考試成績?yōu)楹细瘢。。?
else          
  
       echo "很遺憾您考試成績可以收拾收拾回家種苞米了?。?!"
fi           
  
[root@centos01 ~]# chmod +x if_duo.sh      
[root@centos01 ~]# ./if_duo.sh     
請(qǐng)輸入考試成績:94        
  
恭喜您考試成績?yōu)閮?yōu)秀!?。?
[root@centos01 ~]# ./if_duo.sh
請(qǐng)輸入考試成績:82
恭喜您考試成績?yōu)楹细瘢。。?
[root@centos01 ~]# ./if_duo.sh
請(qǐng)輸入考試成績:71
恭喜您考試成績?yōu)楹细瘢。。?
[root@centos01 ~]# ./if_duo.sh
請(qǐng)輸入考試成績:32
很遺憾您考試成績可以收拾收拾回家種苞米了?。?!

網(wǎng)站欄目:詳解Shell腳本的條件測試和if條件語句
標(biāo)題URL:http://www.5511xx.com/article/dpeossj.html