條件選擇if語句

單分支的if語句

if 判斷條件; then

條件為真的分支代碼

fi

 

    單分支if結構的執行流程:首先判斷條件測試操作的結果,如果返回值為0表示條件成立,則執行then后面的命令序列,一直到遇見fi為止表示結束,繼續執行其他腳本代碼;如果返回不為0,則忽略then后面的命令序列,直接跳至fi行以后執行其他腳本代碼。

條件選擇if語句

 腳本代碼

[root@localhost bin]# cat ifsingle.sh
#!/bin/bash
 
if [ `id -u` -eq 0 ]; then
         echo "The current is to use the administrator account."
fi

執行結果

[root@localhost bin]# ifsingle.sh
The current is to use the administrator account.

 

雙分支的if語句

 

    對于雙分支的選擇結構來說,要求針對條件成立、條件不成立兩種情況分別執行不同的操作。

 

if 判斷條件; then

條件為真的分支代碼

else

條件為假的分支代碼

fi

 

    雙分支if結構的執行流程:首先判斷條件測試操作的結果,如果條件成立,則執行then后面的命令序列1,忽略else及后面的命令序列2,直至遇見fi結束判斷;如果條件不成立,則忽略then及后面的命令序列1,直接跳至else后面的命令序列2執行。直到遇見fi結束判斷。

條件選擇if語句

 腳本代碼

[root@localhost bin]# cat checkip.sh
#!/bin/bash
# Description: Test whether or not the remote host can communication
 
read -p "Please input ip address: " ip
ping -c1 -W1 $ip &> /dev/null
if [ $? -eq 0 ]; then
         echo "Host is up"
else
         echo "Host is down"
fi

執行結果

[root@localhost bin]# checkip.sh
Please input ip address: 10.1.252.252 
Host is up
[root@localhost bin]# checkip.sh
Please input ip address: 10.1.252.22
Host is down

多分支

if 判斷條件1

then

判斷條件1為真的分支代碼

elif 判斷條件2

then

    判斷條件2為真的分支代碼

elif 判斷條件n

then

判斷條件n為真的分支代碼

else

    判斷條件n為假的分支代碼

fi

if 判斷條件1; then

判斷條件1為真的分支代碼

elif 判斷條件2; then

    判斷條件2為真的分支代碼

elif 判斷條件n; then

判斷條件n為真的分支代碼

else

    判斷條件n為假的分支代碼

fi

 

逐條件進行判斷,第一次遇為“真”條件時,執行其分支,而后結束整個if語句

多分支if結構的執行流程:首先判斷條件測試操作1的結果,如果條件1成立,則執行命令序列1,然后跳至fi結束判斷;如果條件1不成立,則繼續判斷條件測試操作2的結果,如果添加2成立,則執行命令序列2,然后跳至fi結束判斷;…..如果所有的條件都不滿足,則執行else后面地命令序列n,直到fi結束判斷。

實際上可以嵌套多個elif語句。If語句的嵌套在編寫Shell腳本是并不常用,因此多重嵌套容易使程序結構變得復雜。當確實需要使用多分支的程序結構是,建議采用case語句要更加方便。

條件選擇if語句

 腳本代碼

[root@localhost bin]# cat checkgrade.sh
#!/bin/bash
# Description:
read -p "input you grade(0-100):" grade
if [ $grade -ge 85 ] && [ $grade -le 100 ]; then
         echo "you grade is very good!"
elif [ $grade -ge 60 ] && [ $grade -le 84 ]; then
         echo "you grade is good!"
elif [ $grade -gt 100 ]; then
         echo "error! please input 0-100!"
else
         echo "you so bad!"
fi

執行結果

[root@localhost bin]# checkgrade.sh
input you grade(0-100):80
you grade is good!
[root@localhost bin]# checkgrade.sh
input you grade(0-100):50
you so bad!
[root@localhost bin]# checkgrade.sh
input you grade(0-100):98  
you grade is very good!
[root@localhost bin]# checkgrade.sh
input you grade(0-100):33
you so bad!

原創文章,作者:cyh5217,如若轉載,請注明出處:http://www.www58058.com/36012

(0)
cyh5217cyh5217
上一篇 2016-08-16 13:59
下一篇 2016-08-16 17:37

相關推薦

  • samba服務實現:linux和windows之間共享

    1,首先在linux(centos6,7)安裝好samba程序:     yum -y install samba   samba-common        主配置文件:/etc/samba/smb.conf   ~]# groupadd share_gro…

    2017-03-05
  • 新的旅途

    三月末的北京已經讓人感覺有些炎熱,這是我第一次來北京。對我而言這是我人生的另一個起點,押上了我所有驕傲承載著我的夢想對未來所有的期望。這是一場豪賭,新的旅途,從今天開始。

    2018-03-26
  • 字符串處理

      一.字符串處理 v bash 的字符串處理工具: (一)字符串切片: ${#var}: 返回字符串變量var 的長度 例: [root@lxc ~]# a="     " [root@lxc ~]# echo ${#a} 5 [root@lxc ~]# ${var:offse…

    Linux干貨 2016-11-24
  • Linux的用戶,組及文件權限管理

    Linux用戶與組的創建,刪除,屬性修改,文件權限管理

    Linux干貨 2018-02-24
  • 關于大型網站技術演進的思考(三):存儲的瓶頸(3)

    原文出處: 夏天的森林    存儲的瓶頸寫到現在就要進入到深水區了,如果我們所做的網站已經到了做數據庫垂直拆分和水平拆分的階段,那么此時我們所面臨的技術難度的挑戰也會大大增強。 這里我們先回顧下數據庫的垂直拆分和水平拆分的定義: 垂直拆分:把一個數據庫中不同業務單元的數據分到不同的數據庫里。 水平拆分:是根據一定的規則把同一業務…

    Linux干貨 2015-03-03
  • 新手報到

    在開班的第一天為自己立下flag,看畢業時能否實現自己的預期。

    2018-03-26
欧美性久久久久