Shell编程之循环语句

本文详细介绍了Shell编程中的循环语句,包括for、while和until循环的结构、应用实例以及注意事项。此外,还深入讲解了Shell函数的定义、调用、参数传递和递归。文中给出了具体的代码示例,如批量添加用户、根据IP检查主机状态、猜商品价格游戏等。
摘要由CSDN通过智能技术生成

一、循环语句

1.1:for循环语句

1.1.1:for语句结构

  • 读取不同的变量值,用来逐个执行同一组命令
  • 相当于建立了一个数据池,然后for语句一个一个拿数据直到拿完为止

语句结构

for 变量名 in 取值列表
do
	命令序列
done

语句结构举例

for 收件人 in 邮件地址列表
do
	发送邮件
done

在这里插入图片描述

1.1.2:使用for批量添加用户

  • 用户名存放在users.txt文件中,每行一个
  • 初始密码均设为123456
[root@localhost opt]# vim user.txt   //建立一个数据池,里面有张三......用户名
zhangsan
lisi
wangermazi
zhaoliu
tianji
wangba
[root@localhost opt]# vim useradd.sh
#!/bin/bash
Lists=$(cat /opt/user.txt)  //调用查看数据池
for bb in $Lists
do
        useradd $bb
        echo "123456" | passwd --stdin $bb  //将123456 设为登录密码,--stdin(免人机交互)文件对文件  不需要键盘输入文件再跟文件交互了,自动一个账户一个账户设置密码
        echo "$bb添加成功"
done
[root@localhost opt]# chmod +x useradd.sh 
[root@localhost opt]# ./useradd.sh 
Changing password for user zhangsan.
passwd: all authentication tokens updated successfully.
zhangsan添加成功
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
Changing password for user lisi.
passwd: all authentication tokens updated successfully.
lisi添加成功
Changing password for user wangermazi.
passwd: all authentication tokens updated successfully.
wangermazi添加成功
Changing password for user zhaoliu.
passwd: all authentication tokens updated successfully.
zhaoliu添加成功
Changing password for user tianji.
passwd: all authentication tokens updated successfully.
tianji添加成功
Changing password for user wangba.
passwd: all authentication tokens updated successfully.
wangba添加成功
[root@localhost opt]# cat /etc/passwd | grep "bash"
root:x:0:0:root:/root:/bin/bash
dd:x:1000:1000:cn-tangzheng:/home/dd:/bin/bash
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
lisi:x:1002:1002::/home/lisi:/bin/bash
wangermazi:x:1003:1003::/home/wangermazi:/bin/bash
zhaoliu:x:1004:1004::/home/zhaoliu:/bin/bash
tianji:x:1005:1005::/home/tianji:/bin/bash
wangba:x:1006:1006::/home/wangba:/bin/bash

脚本可以适当修改优化:如 echo “123456” | passwd --stdin $bb &> /dev/null
将设置密码产生的提示数据放入黑洞中

批量删除用户:在刚刚的基础上修改

[root@localhost opt]# vim useradd.sh
#!/bin/bash
Lists=$(cat /opt/user.txt)
for bb in $Lists
do
        userdel -r $bb	'-r 删除家目录'
        #echo "123456" | passwd --stdin $bb &> /dev/null
        echo "$bb删除成功"
done

[root@localhost opt]# ./useradd.sh 
zhangsan删除成功
lisi删除成功
wangermazi删除成功
zhaoliu删除成功
tianji删除成功
wangba删除成功
[root@localhost opt]# cat /etc/passwd | grep "bash"
root:x:0:0:root:/root:/bin/bash
dd:x:1000:1000:cn-tangzheng:/home/cn-tangzheng:/bin/bash

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

  • 检测IP地址192.168.197.0-192.168.197.10段落
  • 使用ping命令检测各主机的连通性
[root@localhost opt]# vim ipchk.sh 
#!/bin/bash
for ((i=1;i<=10;i++))
do
  ping -c 3 -i 0.2 -W 3 "192.168.197.$i" &> /dev/null
  if [ $? -eq 0 ]
        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值