shell编程之循环语句 for (包看包会 如果不会 再看一遍)(上)

简介: 1 什么是循环凡是重复执行一段代码, 都可以称之为循环。 循环体中三种专业的话术:遍历、迭代、递归 。遍历(traversal) - 按规则访问非线性结构中的每一项。迭代(iterate) - 按顺序访问线性结构中的每一项。递归(recursion) - 在函数内调用自身, 将复杂情况逐步转化成基本情况。

1 什么是循环

凡是重复执行一段代码, 都可以称之为循环。 循环体中三种专业的话术:遍历、迭代、递归 。

  • 遍历(traversal) - 按规则访问非线性结构中的每一项。
  • 迭代(iterate) - 按顺序访问线性结构中的每一项。
  • 递归(recursion) - 在函数内调用自身, 将复杂情况逐步转化成基本情况。

通常有进入循环的条件和退出循环的条件。

循环次数分为两种:

  • 循环次数事先已知
  • 循环次数事先未知

常见的循环命令:for, while, until。


2 for循环语句

用法:

  • 读取不同的变量值,用来逐个执行同一组命令。
  • 使用场景:一般用于循环次数事先已知的场景。
  • 执行机制:遍历。

格式:

for 变量名 in 取值列表
 do
    命令序列
 done
复制代码


执行机制:

1.依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束。
 2.如果省略 [in WORDS ... ] ,此时使用位置参数变量 in "$@"
复制代码


网络异常,图片无法展示
|


2.1 for语句的作用演示

1、打印1到10的三种方法:

#方法一:
 [root@yuji ~]# for i in {1..10}
 > do
 > echo $i
 > done
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 #方法二:
 [root@yuji ~]# for i in $(seq 1 10)
 > do
 > echo $i
 > done
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 #方法三:
 [root@yuji ~]# for ((i=1;i<=10;i++))
 > do
 > echo $i
 > done
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|




2、打印1到10之间的奇数:

[root@yuji ~]# for i in {1..10..2};do echo $i;done   //分号可以在一行中执行多条命令
 1
 3
 5
 7
 9
 [root@yuji ~]# for i in $(seq 1 2 10);do echo $i;done
 1
 3
 5
 7
 9
 [root@yuji ~]# for ((i=1;i<=10;i+=2));do echo $i;done
 1
 3
 5
 7
 9
复制代码


网络异常,图片无法展示
|


3、打印1到10之间的偶数:

[root@yuji ~]# for i in {2..10..2}; do echo $i; done
 2
 4
 6
 8
 10
 [root@yuji ~]# for i in $(seq 2 2 10);do echo $i;done
 2
 4
 6
 8
 10
 [root@yuji ~]# for ((i=2;i<=10;i+=2));do echo $i;done
 2
 4
 6
 8
 10
复制代码


网络异常,图片无法展示
|


2.2 for循环应用示例

示例1:求从1加到10的和。

创建脚本:

[root@yuji ~]# vim for1.sh      //创建脚本
 #!/bin/bash
 #求从1加到10的和。
 sum=0
 for i in {1..10}
 do
     sum=$[sum+i]
 done
 echo "求和的结果是$sum"
 [root@yuji ~]# bash for1.sh     //执行脚本
 求和的结果是55
复制代码


网络异常,图片无法展示
|




网络异常,图片无法展示
|


示例2:批量添加用户

要求:

  1. 用户名存放在users.txt文件中,每行一个
  2. 初始密码均设为123456

创建脚本:

[root@yuji ~]# vim users.txt
 [root@yuji ~]# cat users.txt
 liyi
 lisan
 liwu
 liliu
 [root@yuji ~]# vim for2.sh             //创建脚本
 #!/bin/bash
 #批量添加用户,用户名存在放users.txt文件中
 #初始密码123456
 for user in $(cat /root/users.txt)
 do
    useradd $user
    echo "123456" | passwd --stdin $user
 done
 [root@yuji ~]# bash for2.sh             //执行脚本
 更改用户 liyi 的密码 。
 passwd:所有的身份验证令牌已经成功更新。
 更改用户 lisan 的密码 。
 passwd:所有的身份验证令牌已经成功更新。
 更改用户 liwu 的密码 。
 passwd:所有的身份验证令牌已经成功更新。
 更改用户 liliu 的密码 。
 passwd:所有的身份验证令牌已经成功更新。
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|




示例3:根据IP地址检查主机状态

要求:

  1. IP地址存放在ips.txt文件中,每行一个
  2. 使用ping命令检测各主机的连通性

创建脚本:

[root@yuji /data]# vim ips.txt
 [root@yuji /data]# cat ips.txt
 192.168.72.10
 192.168.72.22
 192.168.72.129
 192.168.72.200
 [root@yuji ~]# vim for3.sh       //写脚本
 #!/bin/bash
 #IP地址存放在ips.txt文件中,每行一个
 #使用ping命令检测各主机的连通性
 for host in $(cat /data/ips.txt)
 do
    ping -c 3 -i 0.5 -w 4 $host &> /dev/null
    if [ $? -eq 0 ]
    then
        echo "$host is up"
    else
        echo "$host is down"
    fi
 done
 [root@yuji ~]# bash for3.sh     //运行脚本
 192.168.72.10 is down
 192.168.72.22 is down
 192.168.72.129 is down
 192.168.72.200 is down
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|



相关文章
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
Shell
Shell编程(下)
Shell编程(下)
107 1
|
2月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
46 1
|
2月前
|
Shell Linux 开发工具
|
2月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
79 12
|
3月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
3月前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
49 12
|
3月前
|
Shell Linux
Shell 编程 编写hello word
Shell 编写hello word
55 5