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