for循环案例分析

1、for循环第一种写法

1、Shebang (#!/bin/bash):
这一行告诉系统使用 Bash 解释器来执行此脚本。
2、初始化变量 (sum=0):
初始化一个名为 sum 的变量,并将其值设为 0。这个变量用于累加从 1 到 100 的所有整数。
3、For 循环 (for ((i=1;i<=100;i++));do):
使用 for 循环结构,其中 ((i=1;i<=100;i++)) 是一个复合赋值语句,用于初始化循环变量 i(i=1),定义循环条件(i<=100),以及每次循环后更新循环变量(i++)。
4、累加操作 (let sum+=i):
在循环体内部,使用 let 命令来执行算术运算。这里将当前的 i 值加到 sum 变量上。
5、循环结束 (done):
结束循环。
6、输出结果 (echo sum=$sum):
使用 echo 命令输出 sum 变量的值。输出格式为 “sum=总和”。

#!/bin/bash

sum=0

for ((i=1;i<=100;i++));do
    let sum+=i
done

echo sum=$sum

返回结果

sum=5050

2、for循环第二种写法

1、Shebang (#!/bin/bash):
这一行告诉系统使用 Bash 解释器来执行此脚本。
2、初始化变量 (sum=0):
初始化一个名为 sum 的变量,并将其值设为 0。这个变量用于累加从 1 到 100 的所有整数。
3、For 循环 (for i in $(seq 1 100);do):
使用 for 循环结构,其中 $(seq 1 100) 生成一个从 1 到 100 的数字序列。
4、累加操作 (let sum+=i):
在循环体内部,使用 let 命令来执行算术运算。这里将当前的 i 值加到 sum 变量上。
5、循环结束 (done):
结束循环。
6、输出结果 (echo $sum):
使用 echo 命令输出 sum 变量的值。

#!/bin/bash

sum=0

for i in $(seq 1 100);do
 let sum+=i
done
echo sum=$sum

返回结果

sum=5050

3、随机生成10个用户并随机生成口令

1、Shebang (#!/bin/bash):
这一行告诉系统使用 Bash 解释器来执行此脚本。
2、For 循环 (for i in {a…k};do):
使用 for 循环结构,其中 {a…k} 会生成一个从 a 到 k 的字符序列。
3、创建用户 (useradd user$i):
在循环体内部,使用 useradd 命令来创建一个用户名为 user 后跟当前循环变量 i 的用户。

4、生成随机密码 (PASS=$(cat /dev/urandom | tr -dc ‘[:alnum:]’ | head -c10)):
使用 cat /dev/urandom 生成随机数据,然后通过 tr 命令过滤掉非字母数字字符,最后使用 head -c10 截取前 10
个字符作为密码。

5、写入日志文件 (echo user i : i: i:PASS >> /data/user.log): 将用户名和密码追加写入
/data/user.log 文件中。
6、输出创建消息 (echo “user $i is created”):
输出一条消息表明用户已经被创建。
7、循环结束 (done): 结束循环。

#!/bin/bash

for i in {a..k};do
    useradd user$i
    PASS=$(cat /dev/urandom | tr -dc '[:alnum:]' |head -c10)
    echo user$i:$PASS >> /data/user.log
    echo "user $i is created"
done

4、找到网段下可用的IP地址

1、Shebang (#!/bin/bash):
指定使用 Bash 解释器来执行脚本。
2、定义网络地址 (NET=192.168.101):
定义了一个变量 NET,它包含了 IP 地址的前三部分(在这个例子中是 192.168.101)。
3、For 循环 (for ID in {1…254};do):
使用 for 循环结构,其中 {1…254} 生成从 1 到 254 的数字序列,这代表了 IP 地址的最后一段。
4、Ping 主机 (ping -c1 -w1 N E T . NET. NET.ID &> /dev/null):
发送一个 ICMP ping 请求到 N E T . NET. NET.ID,即完整的 IP 地址。
-c1 表示发送一个 ICMP 回显请求包。
-w1 表示等待接收响应的时间为 1 秒。
&> /dev/null 用来丢弃 ping 命令的所有输出。
5、条件判断 (&& 和 ||):
如果 ping 成功,则执行 echo N E T . NET. NET.ID is up|tee -a host_list.log。
如果 ping 失败,则执行 echo N E T . NET. NET.ID is down。
6、后台运行 (}&):
} 结束大括号内的命令组。
& 表示在后台运行该命令组。
7、循环结束 (done):
结束 for 循环。
8、等待所有子进程完成 (wait):
等待所有由前面 & 符号启动的后台进程完成。

#!/bin/bash

NET=192.168.101
for ID in {1..254};do
   {
     ping -c1 -w1 $NET.$ID &> /dev/null && echo $NET.$ID is up|tee -a host_list.log || echo $NET.$ID is down
   } &

done
wait
  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值