shell條件判斷

來源:互聯網
上載者:User

標籤:程式   判別式   

條件判斷式

只要講到程式的話,那麼條件判斷式,亦即是if then這種判別式肯定一定要學習的,另外一種是case...esac


if....then

這個是if...then 是最常見的條件判斷式了,它分為單分支條件判斷式,雙分支條件判斷式,多分支條件判斷式


單分支條件判斷語句:

if [ 條件判斷式 ]

then

  輸出內容

fi


雙分支條件判斷式:

if [ 條件判斷式 ]

then

  輸出內容

else

  輸出內容

fi


多分支條件判斷式

if [ 條件判斷式 ]

then

  輸出內容

elif [ 條件判斷式 ]

then

  輸出內容

else

  輸出內容

fi


對於條件判斷式裡面的對比常見的有3種方式,分別是數值對比、字元對比、檔案對比


數值對比:

整數對比

-eq:測試兩個整數是否相等,比如$A -eq $B

-ne:測試兩個整數是否不等:不等,為真:相等,為假

-gt:測試一個數是否大於另一個數:大於,為真:否則,為假

-lt:測試一個數是否小於另一個數:小於,為真:否則,為假

-ge:大於或等於

-le:小於或等於


字元對比:

STRING1 = STRING2 :表示字元相等

STRING1 != STRING2:表示字元不相等


檔案對比:

-e:表示檔案是否存在

-f:表示檔案存在且是一個普通檔案

##還有很多選項,以上兩個是比較常用的


練習:寫一個指令碼

判斷當前系統上是否有使用者預設shell為bash:

如果有,就顯示有多少個這類使用者:否則,就顯示沒有這類使用者

[[email protected]_2 ~]# cat ba.sh 

#!/bin/bash

bashuser=`grep "\<bash\>" /etc/passwd |cut -d":" -f 1`

if [ $? -eq 0 ];then

   echo "以下使用者擁有bash:"

   echo "${bashuser}"

else

   echo "沒有使用者擁有bash"

fi


練習:寫一個指令碼

給定一個檔案,比如/etc/inittab

判斷這個檔案中是否有空白行

如果有,則顯示其空白行數:否則,顯示沒有空白行

[[email protected]_2 ~]# cat hang.sh 

#!/bin/bash

hang=`grep ‘^$‘ /etc/inittab |wc -l`

if [ ! $? -eq 0 ];then

   exit 8

fi

if [ $hang -gt 0 ];then

  echo "有${hang}行空白行"

else

  echo "沒有空白行"

fi 


練習:寫一個指令碼

給定一個使用者,判斷其UID與GID是否一樣

如果一樣,就顯示此使用者為"good guy":否則,就顯示此使用者為"bad guy"

[[email protected]_2 ~]# cat ug.sh 

#!/bin/bash

useruid=`id -u "[email protected]" 2>/dev/null`

if [ ! $? -eq 0 ];then

  echo "請傳入正確的使用者"

  exit 9

fi

usergid=`id -g "[email protected]" 2>/dev/null`

if [ ! $? -eq 0 ];then

  echo "請傳入正確的使用者"

  exit 9

fi

if [ $# -eq 1 ];then

   if [ $useruid -eq $usergid ];then

     echo "good guy"

     echo "${1}的UID和GID"

   else

     echo "bad guy"

   fi

else

   echo "請傳入正確的參數"

fi


練習:寫一個指令碼

判定命令曆史中曆史命令的總條數是否大於1000,:如果大於,則顯示"Some command will gone":否則顯示"ok"。

[[email protected]_2 ~]# cat his.sh 

#!/bin/bash

#

his=`history |wc -l 2>/dev/null`

if [ $his -gt 1000 ];then

  echo "Some command will gone"

else

  echo "ok"

fi

case....esac判斷

文法

case 變數名稱 in

值一)

 輸出資訊

;;

值二)

 輸出資訊

;;

*)

 輸出資訊

;;

esac

#一般常用於傳參


本文出自 “常想一二” 部落格,請務必保留此出處http://250919938.blog.51cto.com/962010/1918592

shell條件判斷

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.