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