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