if、case例题
目录
1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限
#!/bin/bash if [ -f ~/test.sh ];then echo "文件存在" else echo "文件不存在" fi if [ -x ~/test.sh ];then echo "文件有可执行权限" else echo "文件没有可执行权限" fi
2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
#!/bin/bash read -p "请输入100米赛跑的秒数:" a if [ $a -gt 0 -a $a -le 10 ];then echo "进入决赛" read -p "请输入你的性别:" sex if [ $sex = '女' ];then echo "进入女子组" elif [ $sex = '男' ];then echo "进入男子组" else echo "您输入有误,请重新输入" fi elif [ $a -gt 10 ];then echo "不好意思,您被淘汰了" else echo "您输入有误,请重新输入" fi
3.用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
#!/bin/bash case $1 in *.tar.gz) if [ -f $1 ];then tar -zxvf $1 -C /opt &> /dev/null else echo "$1 不存在" fi ;; *.tar.bz2) if [ -f $1 ];then tar -jxvf $1 -C /opt &> /dev/null else echo "$1 不存在" fi ;; *) echo "文件输入有误" esac
5.根据上一题再判断输入的内容是奇数还是偶数。
#!/bin/bash read -p "请输入数字" num if [ $num -lt 0 -o $num -gt 0 ];then if [ $[$num % 2] = 0 ];then echo "这是个偶数" else echo "这是个奇数" fi elif [ $num -eq 0 ];then echo "非奇非偶" else echo "这不是整数" fi
#!/bin/bash ping -c 3 -i 0.5 -w 5 $1 if [ $? -eq 0 ];then echo "主机在线" else echo "主机离线" 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来管理防火墙:" z case $z in "start") systemctl start firewalld echo "防火墙以开启" ;; "stop") systemctl stop firewalld echo "防火墙以关闭" ;; "status") systemctl status firewalld echo "防火墙正在运行" ;; "restart") systemctl restart firewalld echo "防火墙重启" ;; *) echo "用法 $0 {start|stop|status|restart}" ;; esac