Shell第三章《for循环》
2024-09-02 03:01:30
Shell循环:for
语法结构:
for 变量名 [ in 取值列表 ]
do
循环体
done
需求:自动创建10个用户
#!/bin/bash
read -p "请输入你要创建的用户名:" name
read -p "请输入你要创建用户的数量:" num
for i in `seq $num`
do
useradd ${name}${i}
done
tail -$num /etc/passwd
[root@bogon ~]# sh user.sh
请输入你要创建的用户名:ccc
请输入你要创建用户的数量:3
ccc1:x:1014:1014::/home/ccc1:/bin/bash
ccc2:x:1015:1015::/home/ccc2:/bin/bash
ccc3:x:1016:1016::/home/ccc3:/bin/bash
[root@bogon ~]#
想了解更多方式的也可以去看一下:https://blog.csdn.net/magi1201/article/details/75195983
案例1
通过循环工具,探测全网主机。将在线主机记录在文本中。
思路:
1、编写一个常规的ping测试脚本(无循环)
2、添加循环语句 for i in {2..254}
3、优化脚本(让脚本后台执行,清空脚本,循环完成提示,wait间隔)
思路1:编写常规网络测试脚本
#!/bin/bash
ip=192.168.51.202
ping -c1 -W1 $ip &> /dev/null
if [ $? -eq 0 ];then
echo ${ip} | tee -a ip.txt
fi
[root@bogon ~]# sh ping.sh
192.168.51.202
[root@bogon ~]# cat ip.txt
192.168.51.202
思路2:因为测试对象多,所以使用循环。
#!/bin/bash
for i in {2..254}
do
ip=192.168.51.$i
ping -c1 -W1 ${ip} &> /dev/null
if [ $? -eq 0 ];then
echo ${ip} | tee -a ip.txt
fi
done
[root@bogon ~]# cat ip.txt
192.168.51.202
192.168.51.202
192.168.51.19
192.168.51.20
192.168.51.21
192.168.51.22
192.168.51.23
思路3:优化脚本(后台执行,清空脚本,wait间隔)
#!/bin/bash
>ip.txt ##清空文本
for i in {2..254}
do
{
ip=192.168.51.$i
ping -c1 -W1 ${ip} &> /dev/null
if [ $? -eq 0 ];then
echo ${ip} | tee -a ip.txt
fi
}& ##后台运行
done
wait ##等待前一个程序执行完毕,在执行下一个
[root@bogon ~]# cat ip.txt
192.168.51.20
192.168.51.21
192.168.51.22
192.168.51.23
192.168.51.19
192.168.51.25
192.168.51.24
192.168.51.27
192.168.51.26
192.168.51.28
案例2:通过用户列表文件创建用户
案例1: 通过用户列表文件创建用户
[root@localhost scripts]# cat user.txt
qianqian
qianfeng
fengfeng
示例:
#!/bin/bash
for user in `cat user.txt`
do
useradd $user
echo "$user is created"
done
升级:
用户可以使用参数的形式,自定义用户名文件。
如果用户没有输入用户名文件,提示用户输入
如果用户输入的不是文件,提示用户更正。
启动循环创建用户
如果用户已经存在,提示存在
如果用户不存在,则创建成功,提示成功
[root@bogon ~]# cat user.txt
zhangshan
wangxu
likui
[root@bogon ~]#
#!/bin/bash
passwd=123
#判断脚本是否有参数
if [ $# -eq 0 ];then
echo "usage:$0 filename"
exit 1
fi
#判断用户输入的是否是文件
if [ ! -f $1 ];then
echo "error filename"
exit 2
fi
#设置循环,读取文件,创建用户
for user in `cat $1`
do
id $user &> /dev/null
#如果用户不存在则创建用户,否则提示已存在
if [ $? -eq 0 ];then
echo "user $user already exists"
else
useradd $user
echo "passwd" | passwd --stdin $user &> /dev/null
#判断用户是否创建成功,并提示
if [ $? -eq 0 ];then
echo "user is created."
fi
fi
[root@bogon ~]# sh ccc.sh user.txt
user is created.
user is created.
user is created.
[root@bogon ~]#
[root@bogon ~]#
[root@bogon ~]# sh ccc.sh user.txt
user zhangshan already exists
user wangxu already exists
user likui already exists
[root@bogon ~]# sh ccc.sh
usage:ccc.sh filename
最新文章
- 完美解决 Linux 下 Sublime Text 中文输入
- 双系统下(Ubuntu + win7)windows 无法连接无线网络
- Div+CSS命名规范
- php随机数怎么获取?一个简单的函数就能生成
- linux下eclipse的安装
- C# - 中断模式下的调试
- 使用Javascript限制文本框只允许输入数字
- java.sql.SQLException: ORA-00911: 无效字符 解决方案
- C#调用SAPWebService
- android全屏和取消全屏 旋转屏幕
- 【经验随笔】 Tomcat多个APP使用相同名称环境变量导致问题
- 12.22 大湾区.NET Meet 大会
- Spring Kafka整合Spring Boot创建生产者客户端案例
- NET Core Kestrel部署HTTPS使用SSL证书
- 连接mysql(建表和删表)
- BookStrap之模板继承
- IDEA快捷键笔记
- git工具,conflict冲突解决方法
- 20145326蔡馨熠 实验三 ";敏捷开发与XP实践";
- toFixed