Bash shell编程<五>:while命令、until命令

while

while允许定义要测试的命令

while test command
do
    do other commands
done

一个简单例子

#!/bin/bash
var=10
while [ $var -gt 0 ]
do
    echo $var
    var=$[ $var -1 ]
done

while命令允许多条test命令,只有最后一条测试命令的退出状态是用来决定循环是何时停止的。

#!/bin/bash
var=10
while echo $var
    [ $var -ge 0 ]
do
    echo "this is inside the loop"
    var=$[ $var -1 ]
done

until命令

until需要定义要测试的命令

until test commands
do
    do other commands
done

文件数据的循环

通常要迭代存储在文件内部的项。可以使用以下两种:
使用嵌套循环
更改环境变量IFS
通过更改IFS,可以使for命令将文件中每行作为单独的一项来处理,即使数据包内含空格,提取了文件的个别行之后,还需要再循环以提取包含的数据,栗子如下

#!/bin/bash
IFS.OLD=$IFS
IFS=$'\n'
#反引号,又打错了,不容易发现
for entry in `cat /etc/passwd`
do
    echo "values in $entry -"
    IFS=:
    for value in $entry
    do
        echo "$value"
    done
done

控制循环

可以使用break,continue这两个区别就不多说了,这里还可以使用break n;
continue n来进一步控制循环,栗子

#!/bin/bash
for (( a=1; a<4; a++ ))
do
    echo "outer loop : $a"
    for (( b=1; b<100; b++))
    do
        if [ $b -gt 4 ]
        then
            break 2;
        fi
        echo "inner loop: $b"
    done
done

处理循环的输出

可以在shell脚本中使用管道或重定向循环输出结果,栗子如下

#!/bin/bash
for file in /home/david/*
do
    if [ -d $file ]
    then
        echo "$file is a dir"
    else
        echo "$file is a file"
    fi
done >output.txt

同样可以通过管道传送给其他命令

#!/bin/bash
for state in "New York" China America Japan
do
    echo "$state"
done | sort
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值