返回顶部

Shell条件练习题

Shell条件练习题

1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限

#!/bin/bash

[ -f ~/test.sh ]
if [ $? -eq 0 ]
then
  echo "test.sh文件存在于家目录中"

  [ -x ~/test.sh ]
  if [ $? -eq 0 ]
  then
    echo "test.sh文件具有执行权限"
  else
      echo "test.sh文件不具有执行权限"
  fi

else
  echo "test.sh文件不存在于家目录中"
fi

2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误

#!/bin/bash

read -p "请输入您100米赛跑的秒数:" second
if [ $second -gt 0 -a $second -le 10 ]
then
  echo "恭喜进入选拔赛"
  read -p "请输入您的性别(男/女):" sex

  if [ $sex = 男 ]
  then
    echo "您将进入男生组继续比赛"
  elif [ $sex = 女 ]
  then
    echo "您将进入女生组继续比赛"
  else
    echo "输入错误,请重新输入:" 
  fi

elif [ $second -gt 10 ]
then
  echo "很遗憾,您被淘汰了"
else
  echo "输入错误,请重新输入:"
fi

3.用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录

#!/bin/bash

case $jieya in
*.tar.gz)
  if [ -f $jieya ]
  then
    tar -zxvf $jieya -C /opt &> /dev/null
    echo "$jieya 文件解压成功"
  else
    ehco "$jieya 压缩文件不存在"
  fi
;;

*.tar.bz2)
  if [ -f $jieya ]
  then
    tar -jxvf $jieya -C /opt
    echo “$jieya 文件解压成功”
  else
    echo "$jieya 压缩文件不存在"
  fi
;;

*)
  echo "文件名输入错误"
;;
esac

4.提示用户输入内容,使用if 语句判断输入的内容是否为整数。

#!/bin/bash

read -p "请输入一个整数:" num

expr $num + 0 &> /dev/null

if [ $? -eq 0 ]
then
  echo "您输入的$num 是一个整数"
else
  echo "您输入的$num 不是一个整数"
fi

5.根据上一题再判断输入的内容是奇数还是偶数。

#!/bin/bash

read -p "请输入一个整数:" num

expr $num + 0 &> /dev/null

if [ $? -eq 0 ]
then
  echo "您输入的$num 是一个整数"
else
  echo "您输入的$num 不是一个整数"
fi

expr ${num} % 2  &> /dev/null

if [ $? -ne 0 ]
then
  echo "您输入的$num 是一个偶数"
else
  echo "您输入的$num 是一个奇数"
fi

6.用if 语句判断主机是否存活

#!/bin/bash

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

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 "用法:$0{start|stop|status|restart}"
;;

esac
posted @ 2020-11-22 23:07  丨君丶陌  阅读(244)  评论(0编辑  收藏  举报