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
下一篇 2016-08-18

相关推荐

  • Nginx 功能概述与基础应用!

           本篇博客主要有三个部分组成,目的在于让大家了解ningx的主要功用及作为web server的基础配置;通过本篇博客能够让您对nginx理解更加深入,以便于更好的使用它!                  …

    2017-05-14
  • 文本处理工具Sed及VIM的使用

    1.文本处理工具Sed   Stream Editor 行编辑器                            图1-1 sed帮助手册  用法:      se…

    Linux干货 2016-08-10
  • keepalived高可用

    keepalived实现wrrp热网关备份:keepalived配置文件如下主:! Configuration File for keepalived global_defs {  notification_email {    acassen@firewall.loc    failover@firewal…

    Linux干货 2017-05-16
  • 【N25第四周作业】grep

    文本处理工具: Linux上文本处理三剑客: grep, egrep, fgrep:文本过滤工具(模式:pattern)工具; grep:基本正则表达式,-E,-F egrep:扩展正则表达式, -G,-F grep:不支持正则表达式, sed:stream editor, 流编辑器;文本编辑工具; awk:…

    Linux干货 2016-12-18
  • N23-北京-阿来

           我是阿来,我参加了马哥Linux运维网络班,从2016年9月开始我将跟随马哥学习Linux技术。我的学习宣言是:学习的路,就在脚下,一步一个脚印,领路的人,就这这里,一天一点进步!

    Linux干货 2016-09-12
  • Linux 第三天: (07月26日) 练习和作业

    Linux 第三天: (07月26日) 练习和作业           字符终端登录时, 显示当前登录终端号, 主机名和当前时间   vi /etc/issue   Kernel \r on an \mon terminal \lhostname is \ntime is \t &nbsp…

    Linux干货 2016-08-08