shell基础if与case

1.read

  使用read来把输入值分配给一个或多个shell变量;

  -p 指定要显示的提示;例如 read -p "SHURU" num

  -t TIMEOUT

  read 从标准输入中读取值,给每个单词分配一个变量,所有剩余单词都被分配给最后一个变量

2.流程控制

  过程式编程语言:

                顺序执行

                选择执行

                循环执行

  条件选择if语句:

                 选择执行

                 if语句嵌套

   单分支:

                 if 判断条件;then

                 条件为真的分支代码

                 fi

   双分支:

                if 判断条件;then

                 条件为真的分支代码

                 else

                 条件为假的分支代码

                fi

   多分支:

   if CONDITION1;then

   if-true

   elif CONDITION2;then

   if-true

   elif CONDITION3;then

   if-true

   ……

   else

           all-false

      fi

   逐条件进行判断,第一次遇为“真”条件的时候,执行其分支,而后结束整个if语句

  示例:判断用户输入的参数 是否为正整数

#!/bin/bash
#
read -p "shuruyigeshuzi:" num
[ -z $num ] && echo "shurusz!!" && exit
if [ $num -eq 0 ];then
echo "zheshi 0"
exit
 if let aa=$num &>/dev/null;then
    if [ $? -eq 0 ];then
        if [ $num -lt 0 ];then
        echo "$num FZS!!"
        elif [ $num -ge 0 ];then
        echo "$num zs!!"
        else
        echo "$num error ZQ!"
        fi
   fi
   else
   echo "shuru error"
  fi
fi

  条件判断:case语句

 case 变量引用in

   PAT1)

   分支1

   ;;

   PAT2)

   分支2

   ;;

   *)

   默认分支

   ;;

   esac

#case支持glob风格的通配符:

   *:任意长度任意字符

   ?:任意单个字符

   []:指定范围内的任意单个字符

   a|b:a或b

  示例:提示用户输入yes或 no,并判断用户输入的是yes还是no,或是其它信息

#!/bin/bash
read -p "shuruYEShuoNO:" Ye
case $Ye in
[yY][Ee][Ss]|[Yy])
echo "YES"
;;
[Nn][Oo]|[Nn])
echo "No"
;;
*)
echo "SHURUCUOWU!!!!"
esac

案例练习:

1.写一个脚本/root/bin/createuser.sh,实现如下功能: 使用一个用户名做为参数,如果指定参数的用户存在,就显 示其存在,否则添加之;显示添加的用户的id号等信息 

#!/bin/bash
#
if  id $1 &>/dev/null;then
 echo `id $1`
 else
 useradd $1
 echo `id $1`
fi

2.写一个脚本/root/bin/filetype.sh,判断用户输入文件路 径,显示其文件类型(普通,目录,链接,其它文件类型) 

#!/bin/bash
#
read -p "shuru LJ:" Qw
[ -z $Qw ] && echo "shuruzhifuchuan" && exit
if [ -f $Qw ];then
echo "$Qw PT wenjian"
  elif [ -d $Qw ];then
  echo "$Qw ML wenjian"
  elif [ -h $Qw ];then
  echo "$Qw LJ wenjian"
  else
  echo "shuru ZQ lujing!"
fi

3.列出如下菜单给用户

disk)show disks info;

mem)show memory info;

cpu)show cpu info;

*)quit;

(2)提示用户给出自己的选择,而后显示对应其选择的相应系统信息;

#!/bin/bash
#
cat << EOF
disk) show disks info;
mem) show memory info;
cpu) show cpu info;
*)quit;
EOF
read -p "xuanze yishangxuanxiiang:" Qw
[ -z $Qw ] && echo "shuru ZHI!!!" && exit
case $Qw in
disk)
disk -l
;;
mem)
free -h
;;
cpu)
cat  /proc/meminfo
;;
*)
exit
;;
esac

4.传递一个参数给脚本,此参数为用户名

(2)根据其ID号来判断用户类型:

0:管理员

1-999:系统用户

1000+:登录用户

#!/bin/bash
#
read -p "SHUJUCANSHU:" num
[ -z $num ] && echo "shuruWK!" && exit
if [ $num -eq 0 ];then
  echo "ROOT USER"
  elif [ $num -ge 1 -a $num -lt 999 ];then
  echo "SYSTM USER"
  elif [ $num -ge 1000 ];then
  echo "login USER"
  else
  echo "NO!!!"
fi

原创文章,作者:闹钟哥,如若转载,请注明出处:http://www.178linux.com/36455

(0)
闹钟哥闹钟哥
上一篇 2016-08-18 10:10
下一篇 2016-08-18 10:10

相关推荐

  • 第三周作业

      1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 who | cut -d" " -f1 | sort -u who | cut -d" " -f1 | uniq 2、取出最后登录到当前系统的用户的相关信息。    who | tail -1 …

    Linux干货 2016-11-19
  • LVS专题: NAT和DR模型实现Web负载均衡

    LVS专题: NAT和DR模型实现Web负载均衡 前言: NAT实现 Real Server配置 Director配置 测试 实验拓扑 实验环境 实验步骤 DR实现 Director配置 Real Server配置 测试 实验拓扑 实验环境 实验步骤 总结: 前言: 在上篇文章中我们讲了一些LVS的基本概念和相应模型的实验原理和流程,本篇文章我们主要使用lv…

    2016-04-05
  • 单台主机lnmp+wordpress配置示例

    单台主机lnmp+wordpress fpm配置 ]# yum install php php-fpm php-mysql –y ]# vim /etc/php-fpm.d/www.conf 配置服务监听地址和程序运行者身份 listen = 127.0.0.1:9000 user = nginx group = nginx ]# chown -R ngin…

    Linux干货 2016-11-07
  • 学习宣言

    世界上没有笨的人,只有不勤奋的人。严格按照学习计划要求自己,努力完成学业,为自己以后的职业发展铺平道路;

    Linux干货 2016-10-25
  • 部分基本的文本处理工具

    一、   抽取文本的命令     1、cat     cat [option]… [file]…     常用选项:         -E &nb…

    Linux干货 2016-08-05
  • Linux-Centos7编译内核

    编译内核     前提:         (1)准备好开发环境         (2) 获取目标主机上硬件设备的相关信息         (3) 获取目标主机系统功能的相关信息       …

    2017-07-16