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
相关文章
相关标签/搜索