shell之case语句和循环语句

case语句的结构

  • case语句主要适用于某个变量存在多种取值,而要对每个取值执行不同的命令
case 变量值 in
模式1)
	命令序列1;;	
模式2)
	命令序列2;;
	...
*)			//表示除模式1,2以外的序列
	其他序列
esac
  • case的例子
#!/bin/bash
read -p "请输入一个字符:" key	//定义一个变量
case "$key" in		//开头引用变量
[A-Z]|[a-z])		//第一个命令序列
echo "是字母";;
[0-9])			//第二个命令序列
echo "是数字";;
*)				//其余的值
echo "是特殊字符";;
esac			结尾

循环语句

for循环

for语句结构1

for 变量名 in 取值列表		//可以跟`命令`,文件
do
命令序列
done

例子

#!/bin/bash
#100以内累加

for i in {1..100}		//定义一个i变量,取1到100
do
let  I+=$i				//让I=I+i

done		结尾
echo "$I"		输出I
[root@localhost ~]# bash 7.sh 
5050
#!/bin/bash
#批量创建
for i in {1..10}		//取值1到10
do
useradd stu$i &> /dev/null  //创建用户stu1到stu10,并将提示信息放入回收站
echo "123" | passwd --stdin stu$i &>/dev/null	//设置密码123
echo "stu$i已创建" //输出已创建
done   //结尾

for语句中间插入if

#!/bin/bash
for i in {1..254}
do
ping -c 2 -i 0.1 192.168.1.$i &>/dev/null //ping1网段所有主机并不提示信息
if [ $? -eq 0 ];then  //如果上条命令成功则执行then后面
echo "能通"
else
echo "不通" 		//上条命令不成功执行else后面
fi					//if结尾
done				//for结尾

for的双重循环

#!/bin/bash
#打星星
read -p "输入数字:" num
for ((i=1;i<=$num;i++))
do
for ((j=1;j<=$i;j++))  //先执行里面的for循环,循环完成之后跳出外面,如果外面循环未完成,那就继续循环里面的语句,直到外面的循环完成
do
echo -en "* "		//里面循环一次输出的值
done			//里面的for结尾
echo			//外面循环一次执行的值
done			//外面的for结尾
[root@localhost ~]# bash 10.sh 
输入数字:4
* 
* * 
* * * 
* * * * 

#!/bin/bash
#99乘法表

for ((i=1;i<=9;i++))		//i=1,如果i小于等于9,则执行后面的,然后返回之后自加1
do
for ((j=1;j<=$i;j++))		//j=1,j小于等于i,就执行下面的命令,执行完成后自加1
do
echo -en "$i*$j=$((i*j)) "
done
echo
done
[root@localhost ~]# bash 14.sh 
1*1=1 
2*1=2 2*2=4 
3*1=3 3*2=6 3*3=9 
4*1=4 4*2=8 4*3=12 4*4=16 
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

for的位置参数

#!/bin/bash
for i
do
echo "石头"
done
[root@localhost ~]# bash g.sh 1 	//
石头

while循环语句

while 条件测试操作
do
	命令序列
done

例子

#!/bin/bash
#100以内偶数和
i=1			//赋值
while [ $i -le 100 ]	//判断i是否小于等于100
do 					//是就执行
if [[ $i%2 -eq 0 ]];then	判断i模2是否等于0,是就执行下面的
let I+=i		I=I+i
fi		//结束if
let i++ 	//循环一次结束后i自加1

done 		//整个循环结束
echo $I		输出最后结果
[root@localhost ~]# bash 11.sh 
2550

#!/bin/bash
#猜数字游戏,循环猜
n=20			//赋值
while true		//一直循环
do
read -p "请输入数字:" num		//定义一个变量
if [ $num -eq $n ];then			//变量是否等于赋值的变量
echo "猜对了"						
break							//对了之后退出while循环,继续执行脚本
elif [ $num -gt $n ];then		//变量大于赋值的变量,则执行后面的
echo "大了"
elif [ $num -lt $n ];then		//变量小于赋值的变量,则执行后面的
echo "小了"
fi				//结束if
done			//结束while

其中有三种开关

  • break :退出当前while循环,继续执行后面的脚本
  • continue:退出当前循环,继续执行下一个while循环
  • exit:退出脚本,不执行后续脚本

until循环语句

while是条件成立则反复执行,until则相反,当条件不成立,则反复执行
语句结构跟while一样
例子

#!/bin/bash
#100以内数之和
i=1				//赋值
until [ $i -gt 100 ]  		//当i大于100不成立时,执行后面的
do					//开始执行
let I+=$i			//让I=I+i
let i++				//让i自加1
done				//结束until
echo $I				//输出I
[root@localhost ~]# bash 13.sh 
5050
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值