图形化桌面上的脚本编程

1建立文本菜单

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

1.1建立菜单函数bash

菜单布局函数函数

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

函数例子:spa

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命令。code

桩函数(stub function):为尚未实现的函数所建立,桩函数内没有任何命令,或者只有echo语句来讲明函数须要作什么。orm

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

1.2添加菜单逻辑seo

建立逻辑将菜单选项和将要执行的函数链接在一块儿,须要case命令。ip

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部件

部件 用法 描述
calendar dialog --calendar  parameters 提供选择日期的日历
checklist   显示多个选项
form   构建一个表单
fselect dialog --fselect $目录 height width 能够用fselect目录来浏览文件的位置并选择文件。
gauge   显示完成的百分比进度条
infobox   显示一条消息但不用等待回应
inputbox dialog --inputbox text height width   其中text是提示用户输入内容的文本 为用户提供一个简单的文本框区域来输入文本字符串,并将文本字符串的值发给STDERR,必须重定向STDERR来获取用户输入
inputmenu   提供一个可编辑的菜单
menu dialog --menu "menun_ame"  height width totle 1"string" 2"string" 3"string" 4"string" .....其中totle是菜单项总数。 生成一个菜单
msgbox

dialog --msgbox text height width

dialog --title titlename --msgbox text height width

加标题参数

在窗口中显示一条简单的消息,等待用户单击ok才消失
pause   显示一个进度条来显示特定暂定时间的状态
passwordbox   显示一个文本框来输入文本,但会隐藏输入的文本
passwordbox   显示一个带标签和隐藏文本输入的表单
radiolist   提供一组菜单选项,但只能选择其中一个
tailbox   用tail命令在滚动窗口中显示文件的内容
tailboxbg   跟tail模式同样,可是在后台模式中运行
textbox dialog --textox text height width  其中text是要显示的文件,能够你想要显示内容的文件如/etc/passwd 在窗口中显示大量信息,会生成一个滚动窗口来显示参数中指定文件中的文本。
timebox   提供一个选择小时、分钟和秒的窗口
yesno dialog --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命令查看其用法,在脚本中使用。

相关文章
相关标签/搜索