使用for迴圈結構

2021-09-24 09:39:42 字數 2425 閱讀 3303

問題

本案例要求編寫乙個shell指令碼chkhosts.sh,利用for迴圈來檢測多個主機的存活狀態,相關要求及說明如下:

待檢測的多個目標ip位址,存放在ipadds.txt檔案內

ping檢測可參考前一天的pinghost.sh指令碼

指令碼能遍歷ping各主機,並反饋存活狀態

執行檢測指令碼以後,反饋結果如圖-1所示。

圖-1方案

在shell指令碼應用中,常見的for迴圈採用遍歷式、列表式的執行流程,通過指定變數從值列表中迴圈賦值,每次複製後執行固定的一組操作。

for迴圈的語法結構如下所示:

for 變數名 in 值列表

do命令序列

done

步驟實現此案例需要按照如下步驟進行。

指令碼1,迴圈輸出「我來自 xx 。」,其中xx替換為指定的幾個城市名:

[root@svr5 ~]# vim for01.sh

#!/bin/bash

for i in 「北京」 「上海」 「長沙」 「香港」 「台灣」

doecho 「我來自 $i 。」

done

[root@svr5 ~]# chmod +x for01.sh

指令碼1的執行結果測試:

[root@svr5 ~]# ./for01.sh

我來自 北京 。

我來自 上海 。

我來自 長沙 。

我來自 香港 。

我來自 台灣 。

指令碼2,列出yum庫中vsftpd、bind、httpd、mysql-server四個軟體包的摘要描述資訊(summary行的描述文字):

指令碼2的執行結果測試:

1)任務需求及思路分析

已知ip位址存放在ipadds.txt檔案內,那麼可以採用「變數替換+for迴圈」的方式獲取每乙個ip位址;針對每乙個ip位址執行ping檢測,方法可參考上一章if選擇示例中主機存活檢測的方法。

比如,先確認(或建立)目標ip位址列表檔案,能ping通、不能ping通的位址各新增幾個,以方便測試:

[root@svr5 ~]# vim /root/ipadds.txt

192.168.4.5

192.168.4.205

172.16.16.78

202.106.178.234

2)使用for迴圈整理實現思路

hlist=從檔案/root/ipadds獲得ip位址列表

for ip位址 in 檔案/root/ipadds中的乙個位址

doping ip位址

if [ 前一條命令ping通了 ] ; then

提示「此主機正在執行」

else

提示「此主機已關閉或不存在」

fidone

3)根據實現思路編寫指令碼

[root@svr5 ~]# vim chkhosts.sh

#!/bin/bash

hlist=$(cat /root/ipadds.txt)

for ip in $hlist

doping -c 3 -i 0.2 -w 3 $ip &> /dev/null

if [ $? -eq 0 ] ; then

echo 「host $ip is up.」

else

echo 「host $ip is down.」

fidone

[root@svr5 ~]# chmod +x chkhosts.sh

4)測試、驗證指令碼

[root@svr5 ~]# ./chkhosts.sh

host 192.168.4.5 is up.

host 192.168.4.205 is up.

host 172.16.16.78 is down.

host 202.106.178.234 is down.

python使用迴圈結構 python迴圈結構

python迴圈結構 1.1 使用while python 中沒有 do while 迴圈 while else 在條件語句為 false 時執行 else 的語句塊 list iwhile ilen list print listii while可以使用else語句 list iwhile ile...

迴圈結構while do while的使用

迴圈結構 主要是在程式當中反覆的執行某一段 通過將 放到迴圈結構當中。實現編寫一次,重複執行 可以控制迴圈次數 首先學習while迴圈結構 while迴圈的語法格式 while 迴圈條件 while迴圈結構的執行次數是0 n次。int i 101 while i 100 上述迴圈結構的迴圈次數是一次...

Java 迴圈結構語句使用(中)

public class dowhiledemo do.while的結構和使用 private static void demo1 while 布林表示式 結果為true時,在返回去執行do中的語句 輸出 1 10 int i 1 dowhile i 10 do.while與while不同之處在於,...