for語句的使用

在編程語言中少不了使用邏輯結構去進行操作繁雜的操作,這樣解決了繁瑣的步驟,容易讓別人讀懂。
在linux中有常用的三種循環循環:for,while,until
基本規則:

循環體:要執行的代碼;可能要執行n遍;
    進入條件;
    退出條件;

1、for循環的格式

for循環:
    for 變量名 in 列表;do
        循環體
    done

執行機制:依次將列表中的元素賦值給“變量名”;每一次賦值都執行一次循環體;直到列表中的元素耗盡,循環結束。
示例:添加10個用戶,user1-user10,密碼同用戶名

#!/bin/bash
#
if [ !$UID -eq 0 ];then
echo "only admin can create username."
exit 1
else
for i in {1..10};do
    if id user$1 &>/dev/null;do
        echo "The username has done."
    else
        useradd user$i
        echo "user$i" |passwd --stdin user$i &>/dev/null
        echo "Add user$1 finished."
done        
fi

2、在for循環中列表的生成方式

(1)直接給出字符串列表
(2)整數列表
    (a){start..end}
     (b)$(seq[start[step]end])
     (c)返回列表的命令 $(command) 
    (d)glob
    (e)變量引用
        $@  $*

示例:判讀某路徑下所有文件類型

#!/bin/bash
#
for file in $(ls /var);do
if [ -f /var/$file ];then
    echo "common file"
elif [ -d /var/$file ];then
    echo "directory"
elif [ -L /var/$file ];then
    echo "symbloic file"
else 
    echo "other file"
fi

在for循環中先後次序至關重要。 例如上面的示例先判斷目錄和先判斷鏈接文件顯示的結果時截然不同的。

示例:判斷狀態

#!/bin/bash
#
declare estab=0
declare listen=0
declare other=0
for state in $(netstat -tan |grep 'tcp'|awk '{print $NF}');do
if [ "$stat"=="ESTABLEHED" ];then
    let estab++
elif [ "$stat"=="LISTEN" ];then
    let listen++
else
    let other++
fi
done
echo "ESTABLISHED:$estab"
echo "LISTEN:$listen"
echo "OTHER:$other"

練習1:/etc/rc.d/rc3.d目錄下分別有多個以K開頭和以S開頭的文件:
分別讀取每一個文件,而後輸出;K開頭 ,“輸出文件名 stop” ;S開頭的輸出“文件名 start”

>

#
for filename in $(ls /etc/rc.d/rc3.d);do
        if [ "$filename"=~"K*" ];then
                echo "$filename stop"
        elif [ "$filename"=~"S*" ];then
                echo "$filename start"
        else
                echo "oter type"
        fi
done

練習二:寫一個腳本,使用ping命令探測172.16.250.1-254之間的主機的在線狀態。

#
read -p "Enter enternet number,For example 172.16.0: " IPnumber
for num in {1..254};do
        if  ping -c 1 -w 1 $IPnumber.$num >/dev/null ;then
                echo "The state is active"
        else
                echo "The state isn't active"
        fi
done
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章