Ubuntu下bash脚本中的for循环简介及举例

说明

在bash脚本中,经常会用到for循环,主要介绍for循环的格式以及简单使用。

for循环格式

格式

for VAR_NAME in 元素1 元素2 ...
do
    语句1
    语句2
    ....
done

循环列表生成方法

1.逐个给出元素
2.通配符

示例1

for循环后直接给出元素

直接将路径当做字符串处理
显示/etc/inittab, /etc/rc.d, /etc/fstab三个文件各有多少行:

for FileName in /etc/inittab /etc/rc.d /etc/fstab ; do
    wc -l $FileName
done

使用for循环修改目录/tmp/1.dir, /tmp/2.dir和/tmp/3.dir的最近一 次修改时间为2010年3月3号3点3分3秒:

for FileName in /tmp/1.dir /tmp/2.dir /tmp/3.dir ; do
    touch -m -t 2010030303.03 $FileName 
done

查看mtime修改时间:stat /tmp/1.dir

使用for循环统计/etc/fstab、/etc/rc.d/rc.sysinit、 /etc/inittab文件中各自以#开头的行的行数和空白行数:

#!/bin/bash
count=0
for FileName in /etc/fstab /etc/rc.d/rc.sysinit /etc/inittab; do
    num=$(egrep "^#|^$" $FileName | wc -l)
    count=$(($count+$num))
done
echo "count : "$count

使用for循环分别将/proc/cpuinfo、/proc/meminfo、 /proc/uptime三个文件中 的所有小写字符显示为大写:

#!/bin/bash
for FileName in /proc/{cpuinfo,meminfo,uptime};do
    tr 'a-z' 'A-Z' < $FileName 
done

示例2

for循环接通配符

查看/var目录下所有文件的属性

for File in /var/*;do
   file $File
done

示例3

for循环直接给出数字

直接给出数字
显示/etc/passwd文件中第1、3、6、12个用户的用户名、ID和shell:

for Row in 1 3 6 12;do
    cat  -$Row /etc/passwd | tail -1 | cut -d: -f1,3,7 
done

for循环接数字,使用{}生成数字

{起始数字…结束数字}

for i in {1..100};do
    echo $i
done

for循环接数字,使用seq生成数字

seq 第一个数字 最后一个数字 数字间隔
例如:
seq 6 生成1 2 3 4 5 6
seq 3 5 生成 3 4 5
seq 3 2 5 生成3 5

写一个计算100以内所有偶数和的脚本

sum=0
for i in `seq 2 2 100`;do
    sum=$[$sum+$i]
done  

for循环遍历命令结果

命令执行的结果其实也是字符串,和遍历字符串类似

current_line=0
for Line in `cat /etc/passwd`;do
    echo "$current_line..$Line"
    current_line=$[$current_line+1]
done

C风格的for循环

sum=0
for ((i=0;i <=100;i++));do
    let sum+=i
done
echo "Sum of 0 to 100 is $sum"

注:本文大部分参考自网络,如有侵权,请联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值