• liunx中图形化桌面环境中的脚本编程之——创建文本菜单


    整体是通过建立菜单布局,然后根据菜单上的布局建立函数(就是为这些布局实现功能),最后将函数和布局实现逻辑上的相连;

    如何建立菜单布局?

    整体上是通过打印字符创建出,因此需要使用echo命令,但是有一些非打印字符,这些非打印字符很有用,如 空格键,换行符,对应的是 ,  ,,想要打印出这些非打印字符,就必须使用echo -e  选项,最后一个是获取用户的输入,echo -en 选项可将光标移至你选项后的内容,这样使得菜单更专业些,再用read -n 1 option (意思是读取一个字符并将其保存在option中)

    1 echo -e "			 SYS Admin MENU
    "
    2 echo -e "	1. display disk space"
    3 echo -e "	2. display logged on users"
    4 echo -e "	3. display memory usages"
    5 echo -e "	0. Exit menu
    
    "
    6 echo -en "		Enter option:" 

    运行后的结果是

     1 ]# ./graphical
     2              SYS Admin MENU
     3 
     4     1. display disk space
     5     2. display logged on users
     6     3. display memory usages
     7     0. Exit menu
     8 
     9 
    10             Enter option:[root@localhost ~]# 

    这个是没有加read,没有读取命令,还是不行的,因此想要获取用户的输入,有两步,第一步是提供输入,第二步读取输入;

    现在我们来看看加了read的命令后所出现的情况

    1 #! /bin/bash
    2 echo -e "			 SYS Admin MENU
    "
    3 echo -e "	1. display disk space"
    4 echo -e "	2. display logged on users"
    5 echo -e "	3. display memory usages"
    6 echo -e "	0. Exit menu
    
    "
    7 echo -en "			Enter option:"
    8 read -n 1 option
    9 ~                    

    运行下看看

     1 [root@localhost ~]# ./graphical
     2              SYS Admin MENU
     3 
     4     1. display disk space
     5     2. display logged on users
     6     3. display memory usages
     7     0. Exit menu
     8 
     9 
    10             Enter option:

    很明显这样就是让你在光标后输入一个字符并读取;

    关于echo命令的小提示 echo"the $file not file" ,,就会出现 ./text11: line 15: echothe z2 not file: command not found 

    而如果你如果你在echo后空一格  echo "the $file not file" ,,就会出现 the z2 not file ,,,所以echo打印时必须要空格,至少空一格,至多无限;

    如何创建函数?

    通常我们为没有实现的函数创建一个空函数,里面至多只有一个echo语句,

    1 function stub
    2 {
    3 echo "this is a stub function"
    4 }

    这个桩函数,又叫空函数,是为了,你不必为每个菜单键写一个函数后,才让菜单投入使用;

    另外,有助于shell脚本的,你可以将菜单本身当做一个函数来创建,,所以每次你想再次打开菜单的时候,不用每次都运行这个文件,你可以直接调用菜单函数,重现菜单。

     1 function menu{
     2 clear
     3 echo -e "			 SYS Admin MENU
    "
     4 echo -e "	1. display disk space"
     5 echo -e "	2. display logged on users"
     6 echo -e "	3. display memory usages"
     7 echo -e "	0. Exit menu
    
    "
     8 echo -en "			Enter option:"
     9 read -n 1 option
    10 }

    最后就是将你创建的菜单布局和函数进行相连,,这个相连是通过程序逻辑而实现的;可通过case命令,case可将你的选择和匹配的条件进行比较从而输出命令;

    他的语法是

    case  option in
    test1 | test2) command;;
    test3) command;;
    test4) command;;
    *) command;;
    esac

    首先我可以通过调用menu函数打开菜单布局,然后在用case函数进行程序逻辑相连

  • 相关阅读:
    C++容器不要类型转换
    栈区、堆区、全局区、文字常量区、程序代码区
    C++数据类型字节数
    Exception-Safe Generic Containers
    饭碗是要靠抢的
    Wireshark抓包实例分析TCP重复ACK与乱序
    OSPF
    孩子,我该让你更好的长大!
    云,除了卖,我们还剩下什么?
    动态路由3--链路状态路由选择协议
  • 原文地址:https://www.cnblogs.com/xnb123/p/7284298.html
Copyright © 2020-2023  润新知