Shell脚本for、while循环语句、猜价格小游戏

1、for语句

        (1)for结构
需要指定一个变量及可能的取值列表,针对每个不同的取值重复执行相同的命令序列。直到变量值用完退出循环需要预先指定
for  变量名  in  取值列表
do
        命令序列
done

        (2) 应用示例

根据姓名列表添加与删除账户
指定员工列表文件users.txt,重复执行添加用户,设置初始化密码

        添加

vim /root/users.txt    (用作测试的列表文件)
(添加三个用户)

LS    
QY
AS


vim uaddfor.sh

#!/bin/bash
A=$(cat /root/users.txt)
for B in $A
do
useradd $B
echo "000000" | passwd --stdin $B &> /dev/null    (把每个用户的密码设置为000000)
done

chmod +x uaddfor.sh

./uaddfor.sh

tail -3  /etc/passwd    (查看新建用户)

su 用户名  (测试登录用户)

        批量删除用户的脚本

vim uaddfor.sh

#!/bin/bash
A=$(cat /root/users.txt)
for B in $A
do
        userdel -r $B &>/dev/null
done


chmod +x uaddfor.sh

./uaddfor.sh

tail -3  /etc/passwd    (再次查看用户以删除)

 根据IP地址列表检查主机状态
从ipadds.txt文件中读取各服务器的IP地址,重复执行ping连通性测试,并根据测试结果输
出相应的提示信息。

vim /root/ipadds.txt  (用做测试的列表文件)
192.168.1.10
192.168.1.20
192.168.1.30

vim ping.sh    (循环检查各主机的脚本)
#!/bin/bash
A=$(cat /root/ipadds.txt)
for IP in $A
do
        ping -c 3 -i 0.2 -W 3 $IP &> /dev/null
if [ $? -eq 0 ]
then
        echo "Host $IP is up."
else
        echo "Host $IP is down."
fi
done

chmod +x ping.sh

./ping.sh

2、while 循环语句

 要求控制循环次数、操作对象按数字顺序编号、按特定条件执行重复操作等情况。则更适合使用
另外一种循环-while语句。
 

        (1)while语句结构
        while        条件测试操作

do

        命令序列

done

使用while循环语句时。有两个特殊的条件测试操作,即true(真)和false(假)。使用true作
为条件时.表示条件永远成立。循环体内的命令序列将无限执行下去,除非强制终止脚本exit语句退出脚本);反之,若使用false作为条件。则循环体将不会被执行。这两个特殊条件也可以
用在if语句的条件测试中。

        (2)while语句应用示例

批量添加与删除规律编号的用户
递增20个用户
 

         添加

vim uaddwhile.sh

#!/bin/bash
A="user"
i=1                           (控制用户名称的编号,初始赋值为1)
while [ $i -le 20 ]
do
useradd ${A}$i
echo "000000" | passwd --stdin ${A}$i &> /dev/null
let i++                        (等同于 i= expr $i +1 使变量i的值增加1)
done

chmod +x uaddwhile.sh

 ./uaddwhile.sh

grep "user" /etc/passwd | tail -3    (查看最后三行是否递增用户为20个)

        删除

vim uaddwhile.sh

#!/bin/bash
A="user"
i=1
while [ $i -le 20 ]
do
userdel -r ${A}$i
let i++
done

./uaddwhile.sh

id user20

显示无此用户则成功

         猜价格游戏
由脚本预先生成一个随机的价格数目(0-999)作为实际价格,判断用户猜测
通过环境变量RANDOM 可获得一个小于2的16次方的随机整数
计算其与1000的余数即可获得0-999的随机价格
反复猜测操作可以通过以true作为测试条件的while循环实现
当用户猜中实际价格时终止循环:判断猜测价格与实际价格的过程采用if语句实现,嵌
套在while循环体内;使用变量来记录猜测次数.

vim jiage.sh

#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品实际价格范围为0-999,猜猜看是多少?"
while true
do
read -p "请输入你猜测的价格数目:" INT
let TIMES++
if [ $INT -eq $PRICE ]
then
        echo "恭喜你答对了,实际价格是 $PRICE"
        echo "你总共猜测了$TIMES 次"
        exit 0
elif [ $INT -gt $PRICE ]
then

        echo "太高了!"
else
        echo "太低了!"
fi
done

chmod +x jiage.sh

./jiage.sh        (执行命令后会提前输入0-999之前的数字)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值