流程控制語句(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通
需求:
①思路
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!!!"