多分支结构
if 条件测试1
then 命令序列
elif 条件测试2
then 命令序列
elif 条件测试3
then 命令序列...
else 命令序列
fi
#!/bin/bash
hour=`date +%H`
if [ $hour -ge 6 -a $hour -le 10 ];then
echo "This is morning"
elif [ $hour -ge 11 -a $hour -le 13 ];then
echo "This is noon"
elif [ $hour -ge 14 -a $hour -le 18 ];then
echo "This is afternoon"
else
echo "This is night"
fi
嵌套结构(了解)
嵌套结构
if 条件测试1 then 命令序列
if 条件测试1 then 命令序列
else 命令序列
fi
else 命令序列
fi
模式匹配:case
案例1:简单的模式匹配
邀请用户输入待删除用户名。
询问用户,确定要继续删除吗 yes/no: " y
#!/bin/bash#name#time#1请输入删除的用户名:read -p "please input a username : " user
#2请用户确认是否删除read -p "确认删除吗?[yes/no] " action
#3 case 流控写法case"$action"in
Y|y|YES|yes|Yes|YeS|YEs)userdel -r $userecho"$user is deleted!";;
*)echo"thank you";;
esac
案例2:简单的JumpServer
跳板主机,运行跳板脚本。弹出数十台服务器名的菜单
1)mysql1
2)mysql2
3)bj-web1
........
h) help
q) exit
用户请选择要连接的主机[1-3]: 1
Last login: Sun Sep 6 04:18:01 2015 from 192.168.122.1
[root@localhost ~]$连接成功!!!
案例3:系统管理工具箱
Command action
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
Command (h for help): m
total used free shared buffers cached
Mem: 7628 840 6788 0 29 378
Swap: 2047 0 2047
1 输出菜单并测试。
vim systemmanage.sh
#!/usr/bin/bash#打印菜单cat<<-EOF
h. help
f. disk partation
d. filesystem mount
m. memory
u. system load
q.exit
EOF
# 读取用户输入,进行模式匹配read -p "please input [h for help]: " action
case"$action"in
f)fdisk -l
;;
d)df -hT
;;
m)free -m
;;
u)uptime;;
q)exit;;"");;
*)echo"error";;
esac