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

7.3 操作验证

posted @ 2021-07-14 21:27  落寞1111  阅读(105)  评论(0编辑  收藏  举报