while 循环语句和循环嵌套

重复测试指令的条件,只要条件成立就反复执行对应的命令操作,直到命令不成立或为假;

语法格式:

while 测试命令

do

        命令

done

image.png

注意:避免陷入死循环  while true

例1:降序输出10到1的数字

[root@xuegod63 ~]# cat while-1.sh

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

 

例2:输出如下图两数相乘的效果

image.png

自增操作  let var++  

自减操作  let var--  

[root@xuegod63 ~]# cat while-2.sh

#!/bin/bash
num=1
while [ $num -lt 10 ]
do
        sum=$((  $num * $num ))
        echo  "$num * $num = $sum"
        ((num++))
#       let num++
done

嵌套循环

例1:批量添加a.txt文件5个用户

[root@xuegod63 ~]# vim a.txt   #添加5个用户

mk
cd
ls
find
ln

编写脚本的思路

1  明确脚本的功能

2  编写脚本时会使用到那些命令 ?  useradd    passwd   for 

3  把变化的数据使用变量表示

4  选择适合的流程控制  (选择 、 循环 、分支)

[root@xuegod63 ~]# cat for-adduser.sh 

#!/bin/bash
for name in `cat /root/a.txt`
#for name in $(cat /root/a.txt)
do
        id $name &> /dev/null
        if [ $? -ne 0 ];then
                useradd $name
                echo "123456" |passwd --stdin $name &> /dev/null
                echo "user $name created"
        else
                echo "user $name is exist"
        fi
done
注:&> 是正确和错误的信息都重定向到/dev/null里面

例2 :打印九九乘法表

image.png

注:外层循环循环行,内层循环循环列

规律:  内层循环的变量<=外层循环的变量

[root@xuegod63 ~]# cat for-for.sh

for i in  `seq 9`
do
         for j in `seq $i`
         do
              echo  -n  "$i*$j= `echo $(($i*$j))` "
         done
        echo "  "
done

版权声明:
作者:WaterBear
链接:https://l-t.top/1624.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>