bash編程之for循環

for循環語法結構:shell

for 變量名 in 元素列表;do
    語句1
    語句2
    ……
done


  • 功能描述:用一個變量名去遍歷元素列表,每訪問一個元素就執行一次循環體中的語句,直到元素列表中的元素遍歷完。bash

  • 元素列表:這個元素列表的生成方式有如下幾種:ide

    一、直接逐個給出,元素與元素之間用空格分開spa

    二、使用通配符實現文件的通配,例如「for File in /var/*」,這個元素列表中就是目錄/var上的全部文件it

    三、使用命令的方式來生成這個列表for循環

    四、數字序列的生成有兩種方式:a、{1..100},表示生成1到100的數字序列。class

    b、`seq [起始數字] [步長] 結束數字 `變量

example:date

一、寫一個腳本,把/etc/inittab /etc/fstab檔案拷貝到/tmp目錄下,文件名爲「原始文件名-日期」file

#!/bin/bash
#
for File in /etc/fstab /etc/inittab;do
        Basename=`basename $File`
        cp $File /tmp/$Basename-`date +%F`
done


二、寫一個腳本,顯示出/etc/passwd中第一、第三、第6個用戶的用戶名,UID,GID,shell信息

#!/bin/bash
#
for Id in 1 3 6;do
        Username=`head -$Id /etc/passwd | tail -1 | cut -d: -f1`
        Uid=`head -$Id /etc/passwd | tail -1 | cut -d: -f1`
        Sell=`head -$Id /etc/passwd | tail -1 | cut -d: -f1`
        echo "Username:$Username,Uid:$Uid,Sell:$Sell."
done

三、寫一個腳本,判斷/var目錄下的目錄、檔案的類型,是目錄,仍是檔案文件

#!/bin/bash
#
for File in /var/*;do
        file $File
done

注:此腳本只能判斷/var目錄下的一級目錄及/var下的檔案的類型,對/var下的二級目錄及二級目錄下的檔案不能實現判斷。

四、寫一個腳本,用for循環顯示出/etc/passwd裏的全部用戶的用戶名和shell信息

#!/bin/bash
#
Count=`wc -l /etc/passwd | cut -d' ' -f1`
for I in `seq 1 $Count`;do
        Uid=`head -$I /etc/passwd | tail -1 | cut -d: -f3`
        Shell=`head -$I /etc/passwd | tail -1 | cut -d: -f7`
        echo "UID:$Uid,SELL:$Shell"
done
相關文章
相關標籤/搜索