case 菜单选择打印
语法:
case var in var变量
patten 1) 匹配模式1 a|b|c |和or类似
command... 需要执行的命令
;; 命令执行完毕
patten 2)
command...
;;
*) 默认值,没有匹配的模式
command...
;;
esac 代表case语句的结束
demo1:当给程序输入start|s时,显示service is running!;stop——>service is stoped;...
#!/bin/bash
#read -p "请输入参数:" var
case $1 in
start|s)
echo service is running
;;
stop)
echo service is stoped
;;
reload)
echo service is reload
;;
*)
echo xxxxx
;;
esac
demo2:相互嵌套
#!/bin/bash
read -p "小明,你喜欢我吗?(喜欢|不喜欢|爱你):" love
case $love in
喜欢)
echo "我也喜欢你"
;;
不喜欢)
read -p "那你喜欢谁?" who
case $who in
小红)
echo "她是我的闺蜜"
;;
小彭)
echo "额..拜拜"
;;
*)
echo "我们不合适"
;;
esac
;;
*)
echo "你到底什么意思?"
;;
esac
demo3:维护菜单选择
#!/bin/bash
echo "*********welcome to uplooking*********"
echo "*********选择操作类型*******************"
echo "**********1——系统**********************"
echo "**********2——程序**********************"
echo "**********3——数据库********************"
echo "**********0——退出**********************"
read -p "请选择操作类型:" choose
case $choose in
1)
echo "你选择的类型是系统维护"
;;
2)
echo "你选择的是程序"
;;
3)
echo "*********welcome to uplooking*********"
echo "*********选择操作类型*******************"
echo "**********1——备份**********************"
echo "**********2——数据导入导出****************"
echo "**********0——退出**********************"
read -p "请你输入对数据库的操作:" choose1
case $choose1 in
0)
echo "退出"
;;
1)
echo "备份数据库"
;;
2)
echo "导入导出"
;;
*)
echo "你要干啥?"
;;
esac
;;
0)
exit
;;
esac
课堂练习:
1、输入一个等级(A—E),查看每个等级的成绩;如输入A,则显示"90分~100分";依次类推
2、模拟一个2人相亲的场景,交互式输入名字、性别、年龄(年龄放在性别判断后)
1>对性别进行判断,如果不输入男或者女,则显示“你是泰国来的码?”如果是男的则对年龄判断:
2>男的年龄大于18岁则显示“某某先生,你结婚了码?”;如果对方回答yes或者结了,则显示“那你来着凑什么热闹?”;如果对方回答no或者没结,则再次询问“那你有房有车吗?”;如果既不说结了也不说没结,则显示“你到底有没有结婚??”
3>问有房有车吗,对方回答有,则显示“咱们去民政局领证吧,正好今天是七夕!”;如果对放回答没有,则显示“不好意思,我去下洗手间...”;如果即不回答有也不回答没有,则显示“请正面回答我的问题??”
4>男的年龄如果小于18岁,则显示“你个小猫孩来着干啥,不好好读书”
5>如果是女的,并且年龄大于18岁,则显示“某某女士,您好”;否则显示“某某小姐,您好”
函数:
语法结构:
方法1:
function function_name(){
command...
}
方法2:
function_name(){
command...
}
return:作用
1、用来返回一个值给函数,主函数可以调用该返回值 0~256 return 2
2、用来结束函数
demo1:
#!/bin/bash
function hello(){
echo hello
echo $1
}
world(){
echo hi
echo $1
}
函数调用:
1、直接在终端调用
# source fun1.sh
[root@node1 shell03]# hello uplooking
hello
uplooking
[root@node1 shell03]# world 888
hi
888
2、写到全局的环境变量文件里
vim /etc/profile
...
function hello(){
echo hello
echo $1
}
world(){
echo hi
echo $1
}
3、脚本里调用
#!/bin/bash
function hello(){
echo hello
echo $1
}
#read -p "请输入参数:" var
case $1 in
start|s)
hello uplooking
echo service is running
;;
stop)
hello 66666;
echo service is stoped
;;
reload)
echo service is reload
;;
*)
hello 7777;echo xxxxx
;;
esac
demo:批量创建3个用户user1~user3;用户的附加组为admin组;密码为123
#!/bin/bash
g=admin
groups(){
groupadd $g
}
users(){
for i in {1..3}
do
useradd -G $g user$i
echo 123|passwd --stdin user$i
done
}
grep -w admin /etc/group &>/dev/null
if [ $? -ne 0 ];then
groups
users
else
users
fi
作业:
写脚本自动搭建web服务,要求如下:
1、基于域名的虚拟主机(DNS可以用脚本也可以写到hosts文件中即可)
2、访问www.myweb.com——>this is myweb test page
3、web服务器的ip和主机名交互式的从外部输入,并且如果不输入一致提示输入
提示:
在脚本中可以先写一个函数,目的是如果不输入相应的内容则一致提示输入
4、搭建完后要显示测试是否成功
5、根据自己的想法可以是该脚本更丰富
预习:sed