Shell 编程-Shell 循环结构看这一篇就够了

今天给伙伴们分享一下Shell 编程-Shell 循环结构,希望看了有所收获。

我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!

如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。

一、Shell 循环 for 语句

  • for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区域(在do和done 之间),直到所有元素取尽为止。

  • 其中,串行是一些字符串的组合,彼此用$IFS所定义的分隔符(如空格符)隔开,这些字符串称为字段。

1、for 循环的语法结构
for 变量名 in 值集合
do
   执行命令
done
2、for 语法说明
  • for 每次从值集合中取一个值赋值给变量
  • do - done 将赋值后的变量带入执行的命令得到执行结果 ,
  • 重复以上两个步骤,直到值集合中的值被一一获取赋值给变量的到所有结果,循环结束
3、实例
1、用 for 循环创建 demo1-demo10,然后在 demo1-demo10 创建 test1-test10 的目录
#!/bin/bash
for a in {
   
    
    1..10}
do
        /usr/bin/mkdir -p /datas/demo$a
        cd /datas/demo$a
        for b in {
   
    
    1..10}
        do
            	/usr/bin/mkdir -p test$b
        done
done

#!/bin/bash
for k in $( seq 1 2 10 )    # seq  a b   用于产生从 a 到 b 之间的所有整数  seq  起始值  步长  结束值
do
   mkdir /root/demo${k}
   cd  /root/demo${k}
   for l in $( seq 1 2 10 )
   do
      mkdir test${l}
      cd  /root/demo${k}
   done
   cd ..
done
2、列出 var 目录下各子目录占用磁盘空间的大小
#!/bin/bash
DIR="/var"
cd $DIR
for k in $(ls $DIR)         # 对/var目录中每一个文件,进行for循环处理
do
  [ -d $k ] && du -sh $k    # 如果/var下的文件是目录,则使用du -sh计算该目录占用磁盘空间的大小
done

作业练习

1:扫描192.168.31.1-15之间哪个主机是在线的 能ping up 不能 down

2、for批量创建用户并设置密码 user1-user10 设置密码 高端就是随机密码 随机密码输出到一个文件对应用户, 低端固定密码 1234.com

3、100 以内的数字求合

4、用*排列输出倒立直角三角形,整直角,平行四边形,梯形,等腰三角形,菱形

代码示例

扫描二维码关注公众号,回复: 17446807 查看本文章
[root@CentOS7-9-06 t1]# bash test8.sh
输入打印三角的行数 9
********
*******
******
*****
****
***
**
*

[root@CentOS7-9-06 t1]# cat test8.sh
#!/bin/bash
read -p "输入打印三角的行数" p
for ((i=1;i<=$p;i++))
do
  for ((o=$i;o<$p;o++))
  do
  echo -n "*"
  done
echo ""
done

二、Shell 循环 while 语句

1、while 循环语法结构
while 条件测试
do
  执行命令
done
2、while 语法说明
  • while 首先进行条件测试,如果传回值为0(条件测试为真),则进入循环,执行命令区域,否则不进入循环

  • 满足 while 测试条件,执行命令区域,直到 while 的测试条件不满足结束执行while循环(如果条件一直满足执行无穷循环)。

3、实例1 while 循环读取文件的内容
#!/bin/bash
while read a  			      # 使用read有标准输入读取数据,赋值变量 demo 中,如果读到的数据非空,就进入循环,显示读取到的内容
do
     echo $a
done < /datas/6files

cat /datas/6files
111
222
333

#!/bin/bash
while read demo
do
  echo ${demo}
done < /home/scripts/testfile  # 将 /home/scripts/testfile 的内容按行输入给 read 读取

read -p 'aaaa:' str
4、实例2 while 条件测试
#!/bin/bash
declare -i i=1           # 声明设置 i 和 sum为整数型
declare -i sum=0

猜你喜欢

转载自blog.csdn.net/mohuanfenghuang/article/details/143173477