1. 程式人生 > 其它 >流程控制語句(study05)

流程控制語句(study05)

五、流程控制語句

1.基本語法結構

(1)if結構

箴言1:只要正確,就要一直向前衝

if [ condition ];then
command
command
fi

if test 條件;then
命令
命令
fi

[ 條件 ] && command

 

 

(2)if...else結構

箴言2:分岔路口,二選一

if [ condition ];then
command1
else
command2
fi

[ 條件 ] && command1 || command2

 

小試牛刀

讓使用者自己輸入字串,如果使用者輸入的是hello,則列印world,否則列印"請輸入hello"

#!/bin/bash

read -p '請輸入字串:' str;
if [ "$str" = "hello" ];then
echo world
else
echo "請輸入hello!"
fi

(3)if...elif...else結構

箴言3:選擇很多,能走的只有一條

 

if [ condition1 ];then
command1 結束
elif [ condition2 ];then
command2 結束
else
command3
fi

註釋:
如果條件1滿足,執行命令1後結束;
如果條件1不滿足,再看條件2,如果條件2滿足執行命令2後結束;
如果條件1和條件2都不滿足執行命令3結束

(4)層層巢狀結構

箴言4:多次判斷,帶你走出人生迷霧

if [ condition1 ];then
command1
if [ condition2 ];then
command2
fi
else
if [ condition3 ];then
command3
elif [ condition4 ];then
command4
else
command5
fi
fi

註釋:
如果條件1滿足,執行命令1;
如果條件2也滿足執行命令2,不滿足只執行命令結束;
如果條件1不滿足,不看條件2,直接看條件3,如果條件3滿足執行命令3;
如果不滿足則看條件4,如果條件4滿足執行命令4,否則執行命令5

 

 

2.應用案例

(一)判斷兩臺主機是否ping通

需求:判斷當前主機是否和遠端主機ping通

①思路

1.使用哪個命令實現 ping -c次數 ip

2.根據命令的執行結果狀態來判斷 $?

3.根據邏輯和語法結構來編寫指令碼

②實現

#!/bin/bash

read -p "請輸入ip或域名:" str
ping -c1 $str > /home/test/all.log
if [ $? -eq 0 ];then
echo "SUCCESS!!!"
else
echo "ERROR!!!"
fi

(二)判斷一個程序是否存在

需求:判斷web伺服器中httpd程序是否存在

#!/bin/bash

read -p "輸入需要查詢的程序:" str
pgrep $str > /home/test/all.log
test $? -eq 0 && echo "EXISTS!!!" || echo "ERROR!!!"