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 ~]#

通过循环工具,探测全网主机。将在线主机记录在文本中。

思路:

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
案例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
done

[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

Original: https://www.cnblogs.com/Jqazc/p/16627780.html
Author: 我真的兔了
Title: Shell第三章《for循环》

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612254/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 设计模式在业务系统中的应用

    本文的重点在于说明工作中所使用的设计模式,为了能够更好的理解设计模式,首先简单介绍一下业务场景。使用设计模式,可以简化代码、提高扩展性、可维护性和复用性。有哪些设计模式,这里就不再…

    数据库 2023年6月14日
    076
  • Python日志模块封装

    一、先上结论 对 Python logging模块进行二次封装 -*- coding:utf-8 -*- 作者:IT小学生蔡坨坨 博客:caituotuo.top 时间:2022/…

    数据库 2023年6月11日
    095
  • MySql Explain字段解析

    MySql Explain字段解析 id id列表示select的序号,查询Sql中有几个select就会有几个id。 id的值越大,该查询的优先级超高。 select_type …

    数据库 2023年5月24日
    091
  • NO.4 计算机组成原理-笔记

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月14日
    094
  • 关于.netcore即时生成缩略图踩的坑

    最近在开发一套系统,很多地方用到了缩略图,然而不同的地方用到的尺寸又不一样,上传的时候生成缩略图就没有意义了,因为你不知道会使用到哪些尺寸,于是想到即时生成的办法,前端判断图片是否…

    数据库 2023年6月9日
    098
  • 03-MySQL事务

    数据库事务 1、事务特性 1.1、原子性 即不可分割性,事务要么全部被执行,要么就全部不被执行 1.2、一致性 事务的执行使得数据库从一种正确状态转换成另一种正确状态 1.3、隔离…

    数据库 2023年6月16日
    0103
  • 普通 Docker 与 Kubernetes 对比

    Docker提供基本容器管理 API 和容器镜像文件格式Kubernetes 管理运行容器的(物理或虚拟)主机群集,如果 Docker 是 OCP 的”内核&#8221…

    数据库 2023年6月14日
    076
  • mysql配置环境变量

    安装MySQL 5.6,0.28 官网下载解压即可 下载后解压 然后以管理身份打开 my.ini配置(得先配置) bin>mysqld –initialize-i…

    数据库 2023年6月9日
    092
  • MySQL实战45讲 14

    14 | count(*)这么慢,我该怎么办? 在开发系统的时候,你可能经常需要 计算一个表的行数,比如一个交易系统的所有变更记录总数。 随着系统中记录数越来越多,select c…

    数据库 2023年6月16日
    0103
  • bat 脚本启用及禁用网卡

    启用网卡 需要以管理员身份运行bat脚本 netsh interface set interface "Npcap Loopback Adapter" enab…

    数据库 2023年6月9日
    0131
  • 微信小程序二维码

    一、获取小程序码的三个接口 不同的接口对应不同的业务场景,接口B用的较多,接口C官方不推荐使用,也就是说根据需码量来决定选择A接口还是B接口。 (1)、接口 A: 适用于需要的码数…

    数据库 2023年6月6日
    0123
  • day03-拉取在线用户功能

    多用户即时通讯系统03 4.编码实现02 4.2功能实现-拉取在线用户 4.2.1思路分析 客户端想要知道在线用户列表,就要向服务器发送请求(Message),因为只有服务器端保持…

    数据库 2023年6月11日
    0168
  • Nginx 配置参数优化

    nginx 配置参数优化 nginx作为高性能web服务器,即使不特意调整配置参数也可以处理大量的并发请求。以下的配置参数是借鉴网上的一些调优参数,仅作为参考,不见得适于你的线上业…

    数据库 2023年6月6日
    093
  • MySQL在Linux环境下的安装、初始化、配置

    CentOS操作系统,可选择: MySQL Community Server 8.0.28 Red Hat Enterprise Linux / Oracle Linux Red …

    数据库 2023年5月24日
    094
  • Java数据结构和算法

    一、数据结构 数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同…

    数据库 2023年6月11日
    0101
  • MySQL 中的锁机制

    技术是为了解决问题而生的,锁被用来实现隔离性,保证并发事务的正确性。 两段锁 数据库遵循的是两段锁协议,将事务分成两个阶段,加锁阶段和解锁阶段(所以叫两段锁) 加锁阶段:在加锁阶段…

    数据库 2023年6月11日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球