linux的case循环,Linux系统中Shell编程之case循环、for循环及While循环的实际使用

Linux系统中Shell编程之case循环、for循环及While循环的实际使用

发布时间:2020-06-03 14:47:57

来源:51CTO

阅读:331

作者:wx5d3a7feeb53cc

栏目:云计算

Shell编程之case语句与循环语句

case多分支语句

case语句的结构

针对变量的不同取值,分别执行不同的命令序列

case 变量值 in

模式 1)

命令序列 1

;;

模式 2)

命令序列 2

;;

*)

默认命令序列

esac

case语句的结构图

abffc4311456e05fdebb06c5563246b1.png

case语句应运示例

示例1

击键类型识别

(1)提示用户输入一个字符

(2)判断出该字符是字母、数字

[root@localhost ~]# vim 1.sh

#!/bin/bash

read -p "请您输入一个字符:" key

case $key in

[ a-z]|[A-Z])

echo "你输入的是字母"

;;

[0-9])

echo "你输入的是数字"

;;

esac

[root@localhost ~]# chmod +x 1.sh

[root@localhost ~]# ./1.sh

f276a12065a3f1cf26fd78127afea9f0.png

示例2

编写系统服务脚本

(1)使用start、stop、restart等参数来控制服务

(2)服务控制指令通过位置变量$1传入

[root@localhost ~]# vim myprog.sh

#!/bin/bash

case "$1" in

start)

echo -n "正在启动sleep服务..."

if sleep 7200 &

then

echo "OK"

fi

;;

stop)

echo -n "正在停止sleep服务...."

pkill "sleep" &> /dev/null

echo "OK"

;;

status)

if pgrep "sleep" &>/dev/null;then

echo "sleep 服务已启动."

else

echo "sleep服务已经停止"

fi

;;

restart)

$0 stop

$1 start

;;

*)

echo "用法:$0 {start|stop|status|restart}"

esac

[root@localhost ~]# chmod +x myprog.sh

87c8cab91fe0df19f01d24d9361bbc69.png

循环语句

for语句的结构

读取不同的变量值,用来逐个执行同一组命令

for 变量名 in 取值列表

do

命令序列

done

for语句的结构图

11841b0b9de8bd693a80de44a7027c14.png

for 语句应运示例

示例1

批量添加用户

(1)用户名存放在users.txt文件中,每行一个

(2)初始密码均设为123456

(3)验证脚本

[root@localhost opt]# vim users.txt

lisi

wangwu

zhangsan

zhaoliu

[root@localhost opt]# vim 3.sh

#!/bin/bash

TMP=$(cat /opt/users.txt)

for USER in $TMP

do

useradd $USER

echo "123456" | passwd --stdin $USER &> /dev/null

done

[root@localhost opt]# chmod +x 3.sh

[root@localhost opt]# ./3.sh

5cad8d6d8053c2dbc75b3be1b294862d.png

示例2

根据IP地址检查主机状态

(1)IP地址存放在ipadds.txt为文件中,每行一个

(2)使用ping命令检测各主机的连通性

[root@localhost ~]# vim ipadds.txt

192.168.217.130

192.168.178.2

192.168.217.129

192.168.312.23

[root@localhost ~]# vim ping.sh

#1/bin/bash

TMP=$(cat /root/ipadds.txt)

for IP in $TMP

do

ping -c 3 -i 0.2 -M 3 $IP &> /dev/null

if [ $? -eq 0 ]

then

echo "$IP is up"

else

echo "$IP id down"

fi

done

[root@localhost ~]# chmod +x ping.sh

[root@localhost ~]# ./ping.sh

34c4a662759bba1c37de66498a149753.png

while 语句的结构

重复测试某个条件,只要条件成立则反复执行

while 条件测试操作

do

命令序列

done

while 语句的结构图

18d8739d697b17a98aba781dcf3c09c1.png

while语句应运示例

示例1

批量添加用户

(1)用户名称以stu开头,按照数字顺序进行编号

(2)一共添加20个用户,即stu1、stu2、.........、stu20

(3)初始密码均设为123456

[root@localhost ~]# vim stu.sh

#!/bin/bash

i=1

DP="stu"

while [ $i -le 20 ]

do

useradd $DP$i

echo "123456" | passwd --stdin $DP$i &>/dev/null

let i++

done

[root@localhost ~]# chmod +x stu.sh

[root@localhost ~]# ./stu.sh

e61bfb4c7f702ce2c33d73db1530aec8.png

示例2

猜商品价格

(1)通过变量RANDOM获取随机数

(2)提示用户猜测并记录次数,猜中后退出循环

[root@localhost ~]# vim san.sh

#!/bin/bash

S=0

PR=$(expr $RANDOM % 1000)

echo "商品实际价格为0~999,猜猜是多少?"

while true

do

read -p "请输入你猜测的价格数目:" RIN

let S++

if [ $RIN -eq $PR ]

then

echo "恭喜你才中了!"

echo "你猜测的次数为$S"

exit 0

elif [ $RIN -lt $PR ]

then

echo "你猜测的值太小了"

else

echo "你猜测的值太大了"

fi

done

[root@localhost ~]# chmod +x san.sh

[root@localhost ~]# ./san.sh

317761c629d6708256a29d241b9e1703.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值