志不强者智不达,言不信者行不果。这篇文章主要讲述Shell脚本练习----条件语句(if case语句的应用)相关的知识,希望能为你提供帮助。
【Shell脚本练习----条件语句(if case语句的应用)】**1. 检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限
- 提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于13秒的进入选拔赛,大于13秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
- 用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
- 提示用户输入内容,使用if 语句判断输入的内容是否为整数。
- 根据上一题再判断输入的内容是奇数还是偶数。
- 用if 语句判断主机是否存活
- 用case语句在/etc/init.d/目录中写一个firewalld脚本,并加入到系统服务管理中使能够使用 service firewalld start|stop|restart|status 来管理firewalld服务,要求如果命令选项不对,则提示 “用法: $0 start|stop|status|restart”。**
#!/bin/bash
if [ -f ~/test.sh ];
then
echo "test.sh文件存在"
if [ -x ~/test.sh ];
then
echo "test.sh文件有执行权限"
else
echo "test.sh文件没有执行权限"
fi
else
echo "test.sh文件不存在"
fi
文章图片
2. 提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于13秒的进入选拔赛,大于13秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
#!/bin/bash
read -p "请输入你100米赛跑的秒数(整数):" time
if [ $time -gt 0 -a $time -le 13 ];
then
echo "恭喜你进入选拔赛"
read -p "请输入你的性别(男或女):" sex
if [ $sex = 男 ];
then
echo "恭喜你进入男生组"
elif [ $sex = 女 ];
then
echo "恭喜你进入女生组"
else
echo "输入有误,请重新输入"
fi
elif [ $time -gt 13 ];
then
echo "抱歉,你被淘汰了"
else
echo "输入有误,请重新输入"
fi
文章图片
3. 用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
#!/bin/bash
read -p "请输入压缩包完整名称:" name
case $name in
*tar.gz)
echo "开始解压gz格式tar包"
tar zxvf $name -C /opt
echo "解压完成"
;
;
*tar.bz2)
echo "开始解压bz2格式tar包"
tar jxvf $name -C /opt
echo "解压完成"
;
;
*)
echo "格式有误"
esac
文章图片
4. 提示用户输入内容,使用if 语句判断输入的内容是否为整数。然后在判断是奇数还是偶数。(0是偶数)
#!/bin/bash
read -p "输入数字:" num
if [ $num == 0 ];
then
echo "0既是整数又是偶数"
else
expr $num + 1 &
>
/dev/null
if [ $? =0 ];
then
echo "输入的是整数"
if [ $[$num % 2] = 0 ];
then
echo "输入的是偶数"
else
echo "输入的是奇数"
fi
else
echo "输入的不是整数,请重新输入"
fi
fi
有修改,以文字为主,图片没及时换!
文章图片
6. 用if 语句判断主机是否存活
#!/bin/bash
ping -c 3 -i 0.5 -w 2 $1 &
>
/dev/null
if [ $? -eq 0 ];
then
echo "host is online"
else
echo "host is offline"
fi
文章图片
7. 用case语句在/etc/init.d/目录中写一个firewalld脚本,并加入到系统服务管理中使能够使用 service firewalld start|stop|restart|status 来管理firewalld服务,要求如果命令选项不对,则提示 “用法: $0 start|stop|status|restart”
#!/bin/bash
read -p "输入start|stop|status|restart:来管理防火墙:" firewalld
case $firewalld in
"start")
systemctl start firewalld
echo "防火墙已开启"
;
;
"stop")
systemctl stop firewalld
echo "防火墙已关闭"
;
;
"restart")
systemctl restart firewalld
echo "防火墙已重启"
;
;
"status")
systemctl status firewalld
echo "防火墙状态查看"
;
;
*)
echo "用法:$0start|stop|status|restart"
;
;
esac
文章图片
推荐阅读
- #yyds干货盘点#进程的各种状态详解进程和内存管理相关原理
- 年终总结 -我是怎么成为DevOps的
- 为SSH登录设置电子邮件提醒
- #yyds干货盘点#Windows Server之DNS域名解析服务器
- Centos系统中 Systemd 的Unit文件配置说明
- Jenkins 定时构建触发器
- #yyds干货盘点#linux命令--帮助命令help,man;cp
- #yyds干货盘点#AIX系统下的FTP上传,下载脚本
- #yyds干货盘点#进程相关管理工具