您的位置:首页 > 编程语言

图形化桌面上的脚本编程

2016-05-22 17:00 267 查看

1创建文本菜单

创建交互式shell脚本最长用的方法就是使用菜单。提供各种选项帮助脚本用户了解脚本功能。菜单会清空显示区域,然后显示可用的选项列表。

1.1创建菜单函数

菜单布局函数

创建菜单布局函数的第一步是决定菜单上要显示什么,用echo命令显示,在显示前先用clear命令清楚当前终端会话terminfo数据。

函数例子:

function menu {
clear
echo
echo -e "\t\t\tSys Admin Menu\n"         #-e 选项识别换行符制表符等
echo -e "\t1. Display disk place\n"
echo -e "\t2. Display logged on users\n"
echo -e "\t3. Diplay memory usage\n"
echo -e "\t0. Exit program\n\n"
echo -en "\t\tEnter option: "           #-en选项会让显示的一行末尾不加换行符
read -n 1 option                 #read -n 数字  来限定取字符的个数,这样用户输入数字后,不用按会回车键了
}

创建菜单要执行的函数

为菜单选项创建函数,能创建简洁方便的case命令。

桩函数(stub function):为还没有实现的函数所创建,桩函数内没有任何命令,或者只有echo语句来说明函数需要做什么。

桩函数:
function diskspace {
clear
echo "This is where the diskspace command will go“
}

1.2添加菜单逻辑

创建逻辑将菜单选项和将要执行的函数连接在一起,需要case命令。

case $option in
0)
break;;
1)
diskspace;;
2)
whoseon;;
3)
memusage;;
*)
clear
echo "Sorry Wrong slection";;
esac

整合菜单:

#!/bin/bash
#simple script menu
function diskspace {
clear
df -k
}
function whoseon {
clear
who
}
function memusage {
clear
cat /proc/meminfo
}

function menu {
clear
echo
echo -e "\t\t\tSys Admin Menu\n"
echo -e "\t1. Display disk place\n"
echo -e "\t2. Display logged on users\n"
echo -e "\t3. Diplay memory usage\n"
echo -e "\t0. Exit program\n\n"
echo -e "\t\tEnter option: "
read -n 1 option
}
while [ 1 ]
do
menu
case $option in 0) break;; 1) diskspace;; 2) whoseon;; 3) memusage;; *) clear echo "Sorry Wrong slection";; esac
echo -en "\n\t\tHit any key to continue"
read -n 1 line
done
clear

1.4使用select命令创建菜单

select命令允许从单个命令行创建菜单,然后再提取输入的并自动处理。select命令格式:

select variable in list
do
commands
done

list参数是构成菜单的空格分隔的文本选项列表。select命令会在列表中将每个选项作为一个编好的选项显示,然后为选项显示一个特殊的由PS3环境变量定义的提示符。

#!/bin/bash
#using select in the menu
function diskspace {
clear
df -k
}
function whoseon {
clear
who
}
function memusage {
clear
cat /proc/meminfo
}

PS3="Enter option: "
select option in "Display disk place" "Display logged on users" "Diplay memory usage" "Exit program"   #
do
case $option in
"Exit program")            #select 存储在变量中的结果值是整个文本字符串而不是跟菜单选项相关联的数字
break;;
"Display disk place")      #在case语句中需要比较文本字符串
diskspace;;
"Display logged on users")
whoseon;;
"Diplay memory usage")
memusage;;
*)
clear
echo "Sorry Wrong slection";;
esac
done
clear

注意:比较字符串,PS3中存储的也是文本字符串。

caishu@lab403-1F:~/shell_script$ ./menu2
1) Display disk place	    3) Diplay memory usage
2) Display logged on users  4) Exit program
Enter option: 1

文件系统           1K-块      已用      可用 已用% 挂载点
udev             4053800         4   4053796    1% /dev
tmpfs             812996      1380    811616    1% /run
/dev/sda4      243764520  26002332 205356584   12% /
none                   4         0         4    0% /sys/fs/cgroup
none                5120         0      5120    0% /run/lock
none             4064972     73980   3990992    2% /run/shm
none              102400       276    102124    1% /run/user
/dev/sda1         165173     67727     85210   45% /boot
/dev/sda3      708570096 183163596 489390116   28% /home

2.使用窗口

dialog包可以创建标准的窗口对话框。dialog命令使用命令行参数来决定生成哪种窗口部件(widget)。在命令行上指定部件,需要使用双破折线:dialog --widget parameters 其中widget是部件名,parameters定义了部件窗口的大小以及部件需要的文本。

dialog部件

部件用法描述
calendardialog --calendar parameters提供选择日期的日历
checklist显示多个选项
form构建一个表单
fselectdialog --fselect $目录 height width可以用fselect目录来浏览文件的位置并选择文件。
gauge显示完成的百分比进度条
infobox显示一条消息但不用等待回应
inputboxdialog --inputbox text height width 其中text是提示用户输入内容的文本为用户提供一个简单的文本框区域来输入文本字符串,并将文本字符串的值发给STDERR,必须重定向STDERR来获取用户输入
inputmenu提供一个可编辑的菜单
menudialog --menu "menun_ame" height width totle 1"string" 2"string" 3"string" 4"string" .....其中totle是菜单项总数。生成一个菜单
msgboxdialog --msgbox text height width
dialog --title titlename --msgbox text height width
加标题参数
在窗口中显示一条简单的消息,等待用户单击ok才消失
pause显示一个进度条来显示特定暂定时间的状态
passwordbox显示一个文本框来输入文本,但会隐藏输入的文本
passwordbox显示一个带标签和隐藏文本输入的表单
radiolist提供一组菜单选项,但只能选择其中一个
tailbox用tail命令在滚动窗口中显示文件的内容
tailboxbg跟tail模式一样,但是在后台模式中运行
textboxdialog --textox text height width 其中text是要显示的文件,可以你想要显示内容的文件如/etc/passwd在窗口中显示大量信息,会生成一个滚动窗口来显示参数中指定文件中的文本。
timebox提供一个选择小时、分钟和秒的窗口
yesnodialog --yesno text height width允许用户回yes/no问题,在窗口底部生成2个按钮,一个yes,一个no
每个部件都提供了2种输出格式:使用STDERR;使用退出状态码。

如果部件返回了任何数据,比如菜单选择,那么dialog命令会将数据发送到STDERR。

退出状态码决定了用户选择的钮。如果选择yes或ok,返回0;若选择cancel或no。返回1.

dialog选项

dialog命令中定制很多不同的选项,--title 参数就是其中一个选项。还有许多其他选项,使用man dialog命令可以查看。

3.使用图形

KDE和GNOME桌面环境都扩展了dialog命令的想法。KDE环境中有kdialog包;GNOME环境中有gdialog包和zenity包(常用)。可以用man命令查看其用法,在脚本中使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: