Shell编程从入门到精通——循环结构

循环结构是Shell程序设计语言的另外一种常用的流程控制结构

一、循环语句for

1. 带列表的for循环语句

基本语法如下:

for variable in {list}
do
    statement1
    statement2
    ......
done

在上面的语法中,variable称为循环变量,list是一个列表,可以是一系列的数字或者字符串,元素之间使用空格隔开。

#!/usr/bin/env bash

for var in 1 2 3 4 5
do
    echo ${var}
done

for var in {1..5}
do
    echo ${var}
done

Shell允许用户指定for语句的步长,当用户需要指定步长时,其基本语法如下:

for variable in {start..end..step}
do
    statement1
    statement2
    ......
done

举个例子:

#!/usr/bin/env bash

num=0

for i in {1..20..2}
do
    let "num += i"
done

echo ${num}

Output:

$ sh test.sh
100
2. 不带列表的for循环

再某些特殊情况下,for循环的条件列表可以完全省略,称为不带列表的for循环语句。语法如下:

for variable
do
    statement1
    statement2
    ......
done

由于系统变量$@同样可以获取所有的参数,所以以上的语法等价于一下的的语法:

for variable in $@
do
    statement1
    statement2
    ......
done

也同样等价于下面的语法:

for variable in $*
do
    statement1
    statement2
    ......
done
#!/usr/bin/env bash

for args
do
    echo ${args}
done

Output:

$ sh test.sh a b c d
a
b
c
d
3. 类C风格的for循环语句

基本语法如下:

for ((expression1;expression2;expression3))
do
    statement1
    statement2
    ......
done

在上面的语法中,执行条件分为三个部分,expression1通常是条件变量的初始化语句,expression2是决定循环是否退出的语句,expression3是用来改变条件变量值的。

#!/usr/bin/env bash

for ((i=0;i<5;i++))
do
    echo ${i}
done

Output:

$ sh test.sh
0
1
2
3
4
4.使用for循环处理数组元素

针对数组,Shell专门提供了一种特殊语法的for循环语句,其基本语法如下:

for variable in ${array[*]}
do
    statement1
    statement2
    ......
done

举个例子:

#!/usr/bin/env bash

array=(1 2 3 4 5 6)
for var in ${array[*]}
do
    echo ${var}
done

Output:

$ sh test.sh
1
2
3
4
5
6

二、until循环语句

1.until 语句的基本语法

until循环语句的功能是不断地执行循环体中的语句,知道某个条件成立。

until expression
do
    statement1
    statement2
    ......
done

在上面的语法中,expression是一个条件表达式,当该表达式为0时,退出循环。

2. 利用until语句批量增加用户
#!/usr/bin/env bash

i=0

until [ "$i" -eq 5 ]
do
    #执行useradd命令添加用户
    useradd user${i}
    #修改初始密码
    echo "password" | password --stdin user${i} > /dev/null
    #循环变量增加
    i++
done


until [ "$i" -eq 5 ]
do
    #依次删除用户
    userdel -r user${i}
    i++
done

三、while循环语句

while循环语句的基本语法如下:

while expression
do
    statement1
    statement2
    ......
done

当expression为非0时退出循环。

#!/usr/bin/env bash

i=0
#当i大于5时退出循环
while [ "$i" -le 5 ]
do
    echo $[i++]
done

Output:

$ sh test.sh
0
1
2
3
4
5

五、利用break和continus语句控制循环

1.break语句

break语句的作用是立即跳出当前的循环体,可以在for、while或者until等循环语句的循环中使用,如果有多重循环则可以通过在break后面接数字的方式指定退出几层循环。

#!/usr/bin/env bash

for ((i=0;i<5;i++))
do
    echo -n "${i} "
    for  args  in a b c d
    do
        echo -n "${args} "
        if [ "${args}" == b ];then
            break 2
        fi
    done
done

Output:

$ sh test.sh
0 a b
2. continue语句

continue语句的作用是停止本次循环,然后进入下一次循环,可以用在for、while或者until等循环语句的循环中,如果有多重循环则可以通过在continue后面接数字的方式指定停止那一层循环。

#!/usr/bin/env bash

for ((i=0;i<5;i++))
do
    echo -n "${i} "
    for  args  in a b c d
    do
        echo -n "${args} "
        if [ "${args}" == b ];then
            continue 2
        fi
    done
done

Output:

$ sh test.sh
0 a b 1 a b 2 a b 3 a b 4 a b
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值