shell脚本例题—if、case
目录
一、例题1
1.1 需求
检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限
1.2 脚本命令
if [ -e ~/test.sh ];then
echo "test.sh存在"
if [ -x ~/test.sh ];then
echo "test.sh有执行权限"
else
echo "无执行权限"
fi
else
echo "test.sh不存在"
fi
1.3 操作验证
二、例题2
2.1 需求
提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
2.2 脚本命令
read -p "输入100米赛跑的秒数:" num
if [ $num -ge 0 -a $num -le 10 ];then
echo "进入决赛啦"
read -p "请输入性别:" sex
case $sex in
男)
echo "进男生组"
;;
女)
echo “进女生组”
;;
*)
echo “提示错误,请重新输入正确性别”
esac
elif [ $num -gt 10 ];then
echo "被淘汰咯"
else
echo "重新输入"
fi
2.3 操作验证
三、例题3
3.1 需求
用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
3.2 脚本命令
case $1 in
*.tar.gz)
if [ -e $1 ];then
tar zxvf $1 -C /opt &> /dev/null
else
echo "$1不存在"
fi
;;
*.tar.bz2)
if [ -e $1 ];then
tar jxvf $1 -C /opt &> /dev/null
else
echo "$1不存在"
fi
;;
*)
echo "文件格式不对"
esac
3.3 操作验证
四、例题4
4.1 需求
提示用户输入内容,使用if 语句判断输入的内容是否为整数
4.2 脚本命令
read -p "请输入数字:" num
if [ $num = $(awk "BEGIN {print $num}" | awk -F '.' '{print $1}') ];then
echo "整数"
else
echo "小数"
fi
4.3 操作验证
五、例题5
5.1 需求
根据上一题再判断输入的内容是奇数还是偶数
5.2 脚本命令
read -p "请输入数字:" num
if [ $num = $(awk "BEGIN {print $num}" | awk -F '.' '{print $1}') ];then
if [ $(expr $num % 2) = 0 ];then
echo "偶数"
else
echo "奇数"
fi
else
echo "小数"
fi
5.3 操作验证
六、例题6
6.1 需求
用if 语句判断主机是否存活
6.2 脚本命令
ping -c 3 -i 0.5 -w 2 $1 &> /dev/null
if [ $? -eq 0 ];then
echo "$1 is online"
else
echo "$1 is offline"
fi
6.3 操作验证
七、例题7
7.1 需求
用case语句在/etc/init.d/目录中写一个firewalld脚本,并加入到系统服务管理中
使能够使用 service firewalld start|stop|restart|status 来管理firewalld服务,
要求如果命令选项不对,则提示 “用法: $0 {start|stop|status|restart}”
7.2 脚本命令
read -p "输入start|stop|status|restart:来管理防火墙:" fire
case $fire in
start)
systemctl start firewalld
echo "防火墙开启"
;;
stop)
systemctl stop firewalld
echo "防火墙关闭"
;;
restart)
systemctl restart firewalld
echo "防火墙重启"
;;
status)
systemctl status firewalld
echo "防火墙状态查询"
;;
*)
echo "用法:$0{start|stop|status|restart}"
esac