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