case语句的结构
case 变量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 2
;;
„„
* )
默认命令序列
esac
使用case分支语句时,有几个注意特点
Ø case 行尾必须为单词“in”,每一模式必须以右括号“)”结束。
Ø 双分号“;;”表示命令序列的结束。
Ø 模式字符串中,可以用方括号表示一个连续的范围,如“[0-9]”;还可以用竖杠符
号“|”表示或,如“A|B”。
最后的“*)”表示默认模式,其中的*相当于通配符。
case语句
检查用户输入的字符类型
[root@localhost ~]# vim hitkey.sh
#!/bin/bash
read -p "请输入一个字符,并按 Enter 键确认:" KEY
case "$KEY" in
[a-z]|[A-Z]) //匹配任意字母
echo "您输入的是 字母."
;;
[0-9]) //匹配任意数字
echo "您输入的是 数字."
;;
*) //默认模式,匹配任意字符
echo "您输入的是 空格、功能键或其他控制字符."
esac
测试并确认脚本
[root@localhost ~]# ./hitkey.sh
请输入一个字符,并按 Enter 键确认:k //输入字母 k
您输入的是 字母.
[root@localhost ~]# ./hitkey.sh
请输入一个字符,并按 Enter 键确认:8 //输入数字 8
您输入的是 数字.
[root@localhost ~]# ./hitkey.sh
请输入一个字符,并按 Enter 键确认:^[[19~ //按 F8 键
您输入的是 空格、功能键或其他控制字符.
编辑脚本
#!/bin/bash
read -p "请输入一个字符: " k
case "$k" in
[a-z]|[A-Z])
echo "您输入的是 字母: "
;;
[0-9])
echo "您输入的是 数字: "
;;
*)
echo "您输入的是 字符: "
esac
~
测试
for循环语句
举例:
创建脚本
创建脚本为jk
脚本命令
#!/bin/bash
#
for x in $(cat yy)
do
useradd $x
echo "123456" | passwd --stdin $x &>/dev/null
done
运行脚本会自动添加用户
批量添加用户
脚本命令
#!/bin/bash
#
i=1
while [ $i -le 20 ]
do
useradd stu${i}
let i++
done
运行脚本查看
删除用户
脚本命令
#!/bin/bash
#
i=1
while [ $i -le 20 ]
do
userdel stu${i}
let i++
done
根据 IP 地址列表检查主机状态
添加一个脚本
添加脚本
脚本命令
#!/bin/bash
#
for x in $(cat ip.txt)
do
ping $x -c 3 &> /dev/null
if [ $? -eq 0 ]
then
echo ${x} ok > dui
else
echo ${x} bad > cuo
fi
done
猜数字游戏
编辑脚本
脚本命令
#!/bin/bash
#
PRICE=$(expr $RANDOM % 100)
times=0
while true
do
let times++
read -p "0-100 随机" test
if [ $test -eq $PRICE ]
then
echo "选中了"
echo $times
exit 0
elif [ $test -gt $PRICE ]
then
echo "高了"
else
echo "低了"
fi
done
运行脚本 随机后面数字随便添 显示高了 就添小点数字
显示低了 就添大点数字