shell脚本中case选择语句可以结合read指令实现比较好的交互应答操作,case接收到read指令传入的一个或多个参数,然后case根据参数做选择操作。

case的语法如下

case  $char  in

        C | c )
command
;; #每一个选择都以双 ;; 结束
M | m )
command
;;
* ) # * 未匹配到相符的其他值
echo “error”
;; esac #case的结束语句是以esac 结束

下面结合一个简单的小功能使用,脚本中同时也用到了函数的方法;简单查看系统信息

#!/bin/bash
echo "check system run status"
echo "show CPUinfo: C/c "
echo "show Memery used: M/m "
echo "show Disk use status: D/n "
echo "show System user login: U/n "
echo "show System load average:L/l"
echo "show System Ip address: I/i" read_input () {
read -t -p "please Input C/M/D/U/L/I : " char
} show_status () { case $char in C | c )
cat /proc/cpuinfo | grep -o -i 'model name.*'
;;
M | m )
free -m
;;
D | d )
df -h
;;
U | u )
w
;;
L | l )
top | head - | cut -d " " -f -
;;
I | i )
ifconfig | grep -o "[0-9.]\{7,\}" | head -
;;
* )
echo "The characters you have entered are wrong. Please look at the hints"
;;
esac
} for i in $( seq )
do
read_input
show_status
if [ $i -eq ]; then
echo "已经到达查询的最大次数,脚本退出;"
fi
done

看看测试结果

[root@yufu home]# ./test.sh
check system run status
show CPUinfo: C/c
show Memery used: M/m
show Disk use status: D/n
show System user login: U/n
show System load average:L/l
show System Ip address: I/i
please Input C/M/D/U/L/I : The characters you have entered are wrong. Please look at the hints
please Input C/M/D/U/L/I : m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
please Input C/M/D/U/L/I : c
model name : Intel(R) Core(TM) i5-3317U CPU @ .70GHz
model name : Intel(R) Core(TM) i5-3317U CPU @ .70GHz
please Input C/M/D/U/L/I :

这样可以实现交互式地传递参数,并且通过循环可以设置选择次数,通过read  -t 限制等待输入时长等

shell脚本中case的用法的更多相关文章

  1. Linux shell脚本中shift的用法说明【转】

    本文转载自:http://blog.csdn.net/zhu_xun/article/details/24796235 Linux shell脚本中shift的用法说明 shift命令用于对参数的移动 ...

  2. Linux shell脚本中shift的用法说明

    shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本). 示例1:依次读取输入的参数并打印参数个数:run ...

  3. shell脚本中${...}函数的用法总结

    ${...}在字符串中有非常多的用法: 1.${var} 限定变量. 如果一个变量名A是另一个变量名AB的前部分,那么,如果要在AB相连时,要得到A的值,就必须使用${var}限定. 如果变量名不会产 ...

  4. shell脚本中case select 的使用

    #!/bin/bash # case echo "1.Install PHP" echo "2.Install Mysql" echo "3.Inst ...

  5. shell脚本中case /*的作用

    如下语句 case $0 in /*) ;; *) ;; /*在这里的作用就是绝对路径的意思

  6. Linux shell脚本中shift

    Linux shell脚本中shift的用法说明 shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本). ...

  7. Shell脚本中的逻辑判断、文件目录属性判断、if的特殊用法、case判断

    1.Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi格式2:if 条件; then 语句; else 语句; fi格式3:if …; then … ;elif …; then ...

  8. shell脚本中的逻辑判断、文件目录属性判断、if特殊用法、case判断

    7月12日任务 20.5 shell脚本中的逻辑判断20.6 文件目录属性判断20.7 if特殊用法20.8/20.9 case判断 20.5 shell脚本中的逻辑判断 逻辑判断在shell中随处可 ...

  9. Linux centosVMware shell脚本中的逻辑判断、文件目录属性判断、if特殊用法、case判断

    一.shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 格式2:if 条件; then 语句; else 语句; fi 格式3:if …; then … ;elif …; th ...

随机推荐

  1. jquery——事件

    绑定事件的其他方法 以及 取消绑定 事件:: <!DOCTYPE html><html lang="en"><head> <meta ch ...

  2. JSTL截取字符串以及格式化时间

    fn函数里面有很多好用的方法 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions& ...

  3. Android 中文 API (101) —— AsyncTask

    一.结构 public abstract class AsyncTask extends Object java.lang.Object android.os.AsyncTask<Params, ...

  4. css盒子模型 css3盒子相关样式

    1.内边距(内边距在content外,边框内) 内边距属性: padding          设置所有边距 padding-bottom     底边距 padding-left           ...

  5. Web前端开发的学习过程

    2018年 5月27日 开始在MDN上学习HTML/CSS/JavaScript.——6月18日 基本学完MDN的“学习Web开发”的HTML/CSS/JavaScript部分. 6月9日 开始在IF ...

  6. 构建第一个Spring Boot2.0应用之RequestMapping(四)

    在学习controller的时候,测试了在RequestMapping中,value参数中配置集合,实现不同的URL访问同一方法. 本章继续学习和测试RequestMapping的其他特性. 一.Pa ...

  7. IIS发布网站出错解决方案

    1.第一类错误(Web服务器被配置为不列出此目录的内容) 问题所在没有为请求的URL设置默认文档,在IIS“默认文档”添加一个你要访问的默认文档名字,如:Default.aspx. 2.第二类错误(请 ...

  8. python3基础08(exec、bytearray使用等)

    #!/usr/bin/env python# -*- coding:utf-8 -*- str="test"print(ascii(str))a=bytearray("a ...

  9. linux 命令——19 find (转)

    Linux 下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所 以它的选项也很多,其中大部分选项都值得我们 ...

  10. Python变量状态保持四种方法

    Python状态保持 ​ 全局 global def tester(start): global state state = start def nested(label): global state ...