Shell脚本----循环!

Posted handsomeboy-东

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本----循环!相关的知识,希望对你有一定的参考价值。

以案例来理解循环

一、for循环语句

第一种方式:

for 变量名 in 取值列表
do
	命令序列
done
  • for语句执行流程:先将列表中的第一个取值赋值给变量,并执行do……done之间循环体的命令序列,然后将列表中的第二个取值赋值给变量,执行do……done中的命令序列,以此类推,直到列表中的取值都用完
[root@localhost ww]# vim xh.sh
#!/bin/bash
for i in {1..5}
do
        echo $i
done
[root@localhost ww]# bash xh.sh
1
2
3
4
5 
[root@localhost ww]# vim xh.sh
#!/bin/bash
for i in {1..5}
do
        echo hello
done
[root@localhost ww]# bash xh.sh
hello
hello
hello
hello
hello
[root@localhost ww]# vim xh.sh
#!/bin/bash
#列出1到10中的偶数
for i in {1..100}
do
        if [[ $i%2 -eq 0 ]];then
        echo $i
        fi
done
[root@localhost ww]# bash xh.sh
2
4
6
8
10      
[root@localhost ww]# vim xh.sh
#!/bin/bash
#计算1到100所有偶数的和
c=0
for i in {1..100}
do
        if [ $((i%2)) -eq 0 ];then
        c=$((i+c))
        fi
done
echo $c
[root@localhost ww]# bash xh.sh
2550
[root@localhost ww]# vim user.sh 
#!/bin/bash
#创建多个用户并设置密码
for i in {1..10}
do
useradd username$i
echo "123" | passwd --stdin username$i &> /dev/null
echo "unsename${i}用户已创建"
done
[root@localhost ww]# vim star.sh 
#!/bin/bash
for i in {1..5}
do
        for a in {1..5}
        do
                echo -n "* " //*后面有个空格
        done
        echo    //echo表示换行
done
[root@localhost ww]# bash star.sh 
* * * * * 
* * * * * 
* * * * * 
* * * * * 
* * * * *

第二种方式

[root@localhost ww]# vim xh.sh
#!/bin/bash
for ((i=1;i<3;i++))
do
        echo xxx
done
[root@localhost ww]# bash xh.sh
xxx
xxx   

二、while循环语句

while循环语句,判断条件测试结果,如果条件成立则执行命令序列,返回while条件测试,条件成立继续循环执行命令序列,直到条件不成立位置,使用while语句时应该避免出现死循环现象

while 条件测试操作     
do
	命令序列
done

对于死循环的结束命令

break 退出当前循环,任然执行循环外的命令
continue,不进行后面的命令序列,重新循环
exit 退出脚本
[root@localhost ww]# vim wl.sh
#!/bin/bash
#打印1到5的整数
i=1
while [ $i -le 5 ]
do
        echo $i
        let i++
done
[root@localhost ww]# bash wl.sh 
1
2
3
4
5
[root@localhost ww]# vim wl.sh
#!/bin/bash
#计算1到100的和
i=1
a=0
while [ $i -le 100 ]
do
        a=$((a+i))
        let i++
done
echo $a
[root@localhost ww]# bash wl.sh 
5050
[root@localhost ww]# vim c.sh
#!/bin/bash
n=6
while true        
####这里用true表示永远为真,循环会一直执行
do
        read -p "请输入一个数字 :" i
        if [ $i -eq $n ];then
                echo "你猜对了"
                break                //添加break,猜对了就会退出循环
        elif [ $i -lt $n ];then
                echo "你猜小了"
        elif [ $i -gt $n ];then
                echo "你猜大了"
        fi
done
[root@localhost ww]# bash c.sh
请输入一个数字 :5
你猜小了
请输入一个数字 :	7
你猜大了
请输入一个数字 :2
你猜小了
请输入一个数字 :6
你猜对了

三、untli循环语句

untli语句就是跟while相反的语句,while语句时条件成立才循环,untli语句实在条件不成立才循环

[root@localhost ww]# vim hh.sh 
#!/bin/bash
i=1
a=0
until [ $i -ge 100 ]
do
        a=$((i+a))
        let i++
done
echo $a
[root@localhost ww]# bash hh.sh 
4950        //条件不成立即i小于100才循环执行命令序列

以上是关于Shell脚本----循环!的主要内容,如果未能解决你的问题,请参考以下文章

shell 脚本 片段

用于确保在任何给定时间仅运行一个 shell 脚本的 shell 片段 [重复]

linux shell脚本的循环下载

shell脚本编程高级篇

Shell脚本基础 使用变量 条件测试及选择 列表式循环

使用for循环遍历shell脚本中的数组[重复]