liunx中图形化桌面环境中的脚本编程之——创建文本菜单
整体是通过建立菜单布局,然后根据菜单上的布局建立函数(就是为这些布局实现功能),最后将函数和布局实现逻辑上的相连;
如何建立菜单布局?
整体上是通过打印字符创建出,因此需要使用echo命令,但是有一些非打印字符,这些非打印字符很有用,如 空格键,换行符,对应的是\t,\n ,,想要打印出这些非打印字符,就必须使用echo -e 选项,最后一个是获取用户的输入,echo -en 选项可将光标移至你选项后的内容,这样使得菜单更专业些,再用read -n 1 option (意思是读取一个字符并将其保存在option中)
echo -e "\t\t\t SYS Admin MENU\n"
echo -e "\t1. display disk space"
echo -e "\t2. display logged on users"
echo -e "\t3. display memory usages"
echo -e "\t0. Exit menu\n\n"
echo -en "\t\tEnter option:"
运行后的结果是
]# ./graphical
SYS Admin MENU . display disk space
. display logged on users
. display memory usages
. Exit menu Enter option:[root@localhost ~]#
这个是没有加read,没有读取命令,还是不行的,因此想要获取用户的输入,有两步,第一步是提供输入,第二步读取输入;
现在我们来看看加了read的命令后所出现的情况
#! /bin/bash
echo -e "\t\t\t SYS Admin MENU\n"
echo -e "\t1. display disk space"
echo -e "\t2. display logged on users"
echo -e "\t3. display memory usages"
echo -e "\t0. Exit menu\n\n"
echo -en "\t\t\tEnter option:"
read -n option
~
运行下看看
[root@localhost ~]# ./graphical
SYS Admin MENU . display disk space
. display logged on users
. display memory usages
. Exit menu Enter option:
很明显这样就是让你在光标后输入一个字符并读取;
关于echo命令的小提示 echo"the $file not file" ,,就会出现 ./text11: line : echothe z2 not file: command not found
而如果你如果你在echo后空一格 echo "the $file not file" ,,就会出现 the z2 not file ,,,所以echo打印时必须要空格,至少空一格,至多无限;
如何创建函数?
通常我们为没有实现的函数创建一个空函数,里面至多只有一个echo语句,
function stub
{
echo "this is a stub function"
}
这个桩函数,又叫空函数,是为了,你不必为每个菜单键写一个函数后,才让菜单投入使用;
另外,有助于shell脚本的,你可以将菜单本身当做一个函数来创建,,所以每次你想再次打开菜单的时候,不用每次都运行这个文件,你可以直接调用菜单函数,重现菜单。
function menu{
clear
echo -e "\t\t\t SYS Admin MENU\n"
echo -e "\t1. display disk space"
echo -e "\t2. display logged on users"
echo -e "\t3. display memory usages"
echo -e "\t0. Exit menu\n\n"
echo -en "\t\t\tEnter option:"
read -n option
}
最后就是将你创建的菜单布局和函数进行相连,,这个相连是通过程序逻辑而实现的;可通过case命令,case可将你的选择和匹配的条件进行比较从而输出命令;
他的语法是
case option in
test1 | test2) command;;
test3) command;;
test4) command;;
*) command;;
esac
首先我可以通过调用menu函数打开菜单布局,然后在用case函数进行程序逻辑相连
最新文章
- react-echarts之折线图的显示
- [No000094]SVN学习笔记4-版本库概念与部分日常操作
- ActiveMQ2
- 人性的弱点&;&;影响力
- Minifying Angular应用时产生的问题
- Github个人使用经历
- POJ 3026 : Borg Maze(BFS + Prim)
- 《Nagios系统监控实践》勘误
- iphone开发第一个UI应用程序QQ
- 与众不同 windows phone (3) - Application Bar(应用程序栏)
- javascript templating
- JDBC Template
- github 建立主页
- SnmpTools配置
- 汽车为什么选择了CAN总线技术?
- 2019.3.12考试&;2019.3.13考试&;ESTR
- c++中string类中的函数
- Chrome-Adobe Flash 无法正常使用
- HDU4788_Hard Disk Drive
- Android学习笔记_43_网络通信之文件断点上传
热门文章
- LeetCode 122. Best Time to Buy and Sell Stock II (买卖股票的最好时机之二)
- CTS/GTS 常见问题解答
- [译]ASP.NET Core 2.0 视图引擎
- Cup
- 流式计算storm,spark文章
- 0_Simple__fp16ScalarProduct
- JavaUtil_04_验证码生成器
- 提取URL的搜索字符串中的参数
- 图文详解linux/windows mysql忘记root密码解决方案
- JAVA调用matlab代码