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

相关推荐

  • ls 命令浅谈

           LS命令是Linux中最常用的命令,ls是list的缩写,通过ls命令不仅可以查看Linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限),查看目录信息等等。ls命令在日常的Linux操作中用的很多。(这里只是介绍了一部分)       命令格式:ls …

    2017-07-15
  • Linux用户、组、权限管理

    Linux用户与组管理 Linux系统上,用户通过内核拷贝程序到内存中,从此发起进程。进程以发起者的身份进行,进程对文件的访问权限,取决于发起进程的用户的权限。而有些后台进程或服务类进程以非管理员身份运行,为此也需要创建多个普通用户,此类用户不需登录。 系统中,用户类别分为管理员和普通用户(系统用户和登录用户),组类别分为基本组和附加组。管理系统上的用户与组…

    Linux干货 2016-12-07
  • N25_第十一周的作业

    1、详细描述一次加密通讯的过程,结合图示最佳。 2、描述创建私有CA的过程,以及为客户端发来的证书请求进行办法证书。 3、描述DNS查询过程以及DNS服务器类别。          第一段:主机到运营商的DNS服务器(递归)    &nbs…

    Linux干货 2017-02-22
  • 【26期】Linux第六周学习小总结

        时光匆匆,一周时光悠然而逝,带给我们的只有知识的充实,和每日强大的自信心,学习的日益深入,慢慢的然我们的思绪和状态带回高中时光,吃饭上课睡觉三点一线的生活,枯燥中透露出稍微的晨曦,让每个明天都充满着期待,那我们的本周的学习中磁盘管理算是占了很大的比重,毕竟关于磁盘的知识很是难理解,那我就把本周的知识回顾温习,同时分享给大家。 &n…

    2017-08-19
  • iptables

    iptables 包过滤型的防火墙 Firewall:防火墙,隔离工具;工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件; 主机防火墙网络防火墙 软件防火墙(软件逻辑)硬件防火墙(硬件和软件逻辑) 版本 ipfw (firewall framework):命令行工具,生成规则并送…

    Linux干货 2017-06-13
  • 计算机的组成和其功能

    图:计算机组成架构 计算机由硬件和软件组成 硬件部分: CPU:又称中央处理器,整个系统最高执行单元,执行各种运算,控制电脑自动协调地完成各种操作。 主板:它把计算机的各个部件紧密的连接在一起,各个部件通过主板进行数据传输,计算机重要的“交通枢纽”都在主板上,他的工作稳定性影响整机的工作稳定性。因同CPU的插脚和性能不同,所以针对不同的CPU也有不同的主板。…

    Linux干货 2016-08-08