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函数进行程序逻辑相连

原文地址:https://www.cnblogs.com/xnb123/p/7284298.html