导航菜单实战

例:编写一个shell脚本,包含多个菜单,其中需要一个退出选项;可单选也可多选;根据序号选择后,显示所选菜单名称。

  1. #!/bin/bash
  2. #############################
  3. #文件名称:install_hadoop_menu.sh
  4. #作者姓名:wujiadong
  5. #创建日期:--
  6. #############################
  7.  
  8. #主菜单 显示
  9. while true
  10. do
  11. clear
  12. echo -e "\n\n \t\t \033[40;32m ====飞谷安装hadoop主界面=====\033[1m \t\t"
  13. echo -e "\n"
  14. echo -e "\t"\)安装hadoop
  15. echo -e "\t"\)安装hbase
  16. echo -e "\t"\)安装zookeeper
  17. echo -e "\t"\)安装hive
  18. echo -e "\t"\)安装pig
  19. echo -e "\t"\)安装spark
  20. echo -e "\t"\)选择组件安装
  21. echo -e "\t"\)一键安装所有
  22. echo -e "\t"\)退出
  23. echo -e "\n"
  24. echo -e "请选择"
  25. read choice #将输入的序号存入choice这个变量
  26.  
  27. case $choice in
  28. )
  29. break;;
  30. )
  31. echo "正在安装hadoop..."
  32. sleep
  33. echo "hadoop安装成功,请按回车,选择其他内容"
  34. read menu
  35. continue;;
  36. )
  37.  
  38. echo "正在安装habase..."
  39. sleep
  40. continue;;
  41. )
  42. echo "正在安装hbase..."
  43. sleep
  44. continue;;
  45. )
  46. echo "正在安装zookeeper..."
  47. sleep
  48. continue;;
  49. )
  50. echo "正在安装pig..."
  51. sleep
  52. continue;;
  53. )
  54. echo "正在安装spark..."
  55. sleep
  56. continue;;
  57. )
  58. echo "进入选择安装hadoop组件界面"
  59. sh select.sh
  60. continue;;
  61. )
  62. echo "正在安装以上所有组件"
  63. sleep
  64. continue
  65. esac
  66.  
  67. done
  1. #!/bin/bash
  2. ###############################
  3. #文件名称:select.sh
  4. #作者姓名:邬家栋
  5. #创建日期:--
  6. ###############################
  7. #主菜单 显示
  8. clear
  9.  
  10. while true
  11. do
  12. clear
  13. echo -e "\n\n \t\t \033[40;32m =====请选择需要安装的组件=====\033[1m \t\t"
  14. echo -e "\n"
  15. echo -e "\t" \)安装hadoop
  16. echo -e "\t" \)安装hbase
  17. echo -e "\t" \)安装zookeeper
  18. echo -e "\t" \)安装hive
  19. echo -e "\t" \)安装pig
  20. echo -e "\t" \)安装spark
  21. echo -e "\t" \)返回
  22. echo -e "\n"
  23. echo "请选择需要安装组件的代码,多选以逗号分隔:"
  24. read choice #将屏幕输出的内容保存到choice变量里面
  25.  
  26. ###一个case语句
  27. case $choice in
  28. ) break;;
  29. esac
  30. V_INPUT=`echo $choice|sed 's/,/\n/g'` #|管道是将前面命令的输出作为后面命令的输入。sed 语句将逗号变成换行符,变成了多行文件。
  31. for i in $V_INPUT #for循环读取该文件
  32. do
  33. j=`grep $i select_sub.lst`
  34. var1=`echo $j | awk -F,'{print $2}'`
  35. echo "正在安装${var}..."
  36. sleep
  37.  
  38. if [ $? -eq ]; then
  39. echo "安装${var1}成功"|tee a install.log
  40. else
  41. echo"安装${var1}失败"|tee a install.log
  42. fi
  43.  
  44. done
  45.  
  46. done
  1. #!/bin/bash
  2. ##########################
  3. #文件名称:select_sub.lst
  4. #作者姓名:邬家栋
  5. #创建日期:--
  6. #########################
  7.  
  8. ,安装hadoop
  9. ,安装hbase
  10. ,安装zookeeper
  11. ,安装hive
  12. ,安装pig
  13. ,安装spark

执行sh install_hadoop_mainmenu.sh

选1之后

选7之后

注释:
反引号:在执行一条命令时,会先将其中的``语句当做命令执行一遍,再将结果加入到原命令中重新执行。和${}是一样的
 sed的替换:'s/旧字符/新字符/g'

linux基础(10)-导航菜单的更多相关文章

  1. 《前端运维》一、Linux基础--10定时任务

    一.进程管理 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体 ...

  2. Linux基础(10)AIO项目设计与POSIX文件操作和目录管理

    实现fast-cp :拷贝文件到目标对象 Linux的七种文件类型 :https://blog.csdn.net/linkvivi/article/details/79834143 ls -al :h ...

  3. 『学了就忘』Linux基础 — 10、VMware虚拟机中克隆的使用

    目录 1.什么是克隆 2.克隆的两种类型 (1)完整克隆 (2)链接克隆 3.克隆操作 步骤一:克隆虚拟机 步骤二:进行克隆导向 3.快照与克隆的区别 4.镜像的管理 快照和克隆是VMware中两个非 ...

  4. A:linux基础章节导航

    本章的内容主要有: 模板机的安装 常用的小命令 find awk vim sed

  5. bootstrap基础学习【菜单、按钮、导航】(四)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. Netsharp快速入门(之6) 基础档案(创建导航菜单)

    作者:秋时 杨昶   时间:2014-02-15  转载须说明出处 1.1     创建导航菜单 1.在Demo节点下,录入路径名称,并在下方录入两个导航页签名 2.建立分类,只要填路径名 3.双击基 ...

  7. linux 学习10 shell 基础

    10.1 Shell概述 .Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一 ...

  8. Linux基础学习系列目录导航

    Linux基础学习-通过VM安装RHEL7.4 Linux基础学习-命令行与图形界面切换 Linux基础学习-基本命令 Linux基础学习-RHEL7.4之YUM更换CentOS源 Linux基础学习 ...

  9. 【Python之路】第一篇--Linux基础命令

    pwd 命令 查看”当前工作目录“的完整路径 pwd -P # 显示出实际路径,而非使用连接(link)路径:pwd显示的是连接路径 .   表示当前目录 ..  表示上级目录 /  表示根目录 ls ...

随机推荐

  1. @Resource 注解

    @Resource 注解被用来激活一个命名资源(named resource)的依赖注入,在JavaEE应用程序中,该注解被典型地转换为绑定于JNDI context中的一个对象. Spring确实支 ...

  2. xshell ftp报错:找不到匹配的outgoing encryption算法

    场景:由于登陆跳板机都是从采用密钥的方式进行登陆的,然后在传输文件的时候报错 报错信息: 解决方案: 点击属性--->选择aes256-ctr加密方式默认这里是没有选择的 再次连接就成功连接上去 ...

  3. JS探秘——那些你理解存在偏差的问题

    Javascript的连续赋值运算 var a = {n:1}; a.x = a = {n:2}; alert(a.x); // --> undefined 看 jQuery 源码 时发现的这种 ...

  4. iOS学习笔记(九)——xml数据解析

    在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.KissXML.Tiny ...

  5. Balala Power!(大数+思维)

    Balala Power! Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  6. 安装git和配置

     首先更新系统 yum  -y update  安装依赖的包 yum -y install curl-devel expat-devel gettext-devel openssl-devel zli ...

  7. HTML页面布局

    接下来的下面代码,只是给了一个大的前端编写布局,如果你已经是牛人了,就当没看到,如果是一些初学者,不妨拿去用用,里面也写了一些常用的css样式,现在虽然有很多牛逼的前段框架,用起来也非常得心应手,但是 ...

  8. Unity使用native读取streamingasset里文件

    需求是,使用native方式,读取apk包里的lua代码,读进c#,做解密 一准备unity工程 public class GameMain : MonoBehaviour { public cons ...

  9. MySQL中too many connections超出最大连接数的处理方法

    MySQL最大连接数的问题 在MySQL的源码中,默认最大的连接数是16384 {"max_connections", OPT_MAX_CONNECTIONS, "The ...

  10. Windows系统Python 安装第三方模块时,提示pip版本有问题

    如果按照提示输入python -m pip install --upgrade pip 还不行, 那么执行easy_install --upgrade pip 即可 参考:https://stacko ...