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

相关推荐

  • Windows和Linux关于一块网卡绑定多个网络地址的解决之道

    Windows和Linux关于一块网卡绑定多个网络地址的问题解决之道   在不同场合用不同ip地址访问网络,而且都是固定ip。是一件很头疼的问题。不过,Windows和Linux系统都提供了解决方法。接下来我们先谈Windows系统下操作,再说Linux如何操作。 一、Windows设置   1. 我以Windows7为例,首先鼠标左键点击你电脑左下角有网络…

    Linux干货 2016-09-07
  • 编译安装httpd-2.4.9及新特性详解

    前言 前面我们讲解了httpd在CentOS6上(httpd-2.2)的相关功能配置,而CentOS7上采用了httpd-2.4的版本,那么httpd-2.4增加了哪些特性呢?接下来让我们在CentOS6.6上手动编译安装一下httpd-2.4.9,看一下和httpd-2.2有什么不同,顺便补充说一下httpd的其它功能。 环境及新特性介绍 环境介绍 系统环…

    Linux干货 2015-04-15
  • 深入浅出Docker(一):Docker核心技术预览

    原文链接:http://www.infoq.com/cn/articles/docker-core-technology-preview/ 【编者按】Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上,基于Go语言开发并遵从Apache2.0协议开源。Docker提供了一种在安全、可重复的环境中自…

    2015-04-10
  • N26-第二周

    一、文件管理类命令 pwd:显示工作目录 cd:切换目录 cd [dir] cd: 切换回家目录;注意:bash中, ~表示家目录; cd ~:切换回自己的家目录 cd ~USERNAME:切换至指定用户的家目录; cd -:在上一次所在目录与当前目录之间来回切换; 相关的环境变量 $PWD:当前工作目录 $OLDPWD:上一次的工作目录 file:查看文件…

    Linux干货 2017-03-07
  • 配置路由实例

    路由的分类和管理 路由:跨网络通信; 路由分类:     主机路由     网络路由     默认路由 路由管理命令: route 命令是在本地 IP 路由表中显示和修改条目网络命令; 查看:route -n 添加:route add ro…

    Linux干货 2016-09-12
  • linux 删除内核文件,未能启动,修复方法 CDROM与网络法

    当缺少 /boot 内核文件 vmlinuz-2…. initramfs-2… 此时只能借助 光盘 CDROM 来引导生成    进入  RESCUE 模式 1    chroot       &…

    Linux干货 2016-09-13