这是暑假回来看linux命令行与shell脚本编程大全的一些笔记,并不是全部的,只是结合本人觉得需要的一些记录,在整理发表博文时也当作一种回顾!欢迎交流指正!!
17.1.1 创建菜单布局
*默认echo命令只显示可打印的文本字符,要使用制表符和换行符,要在echo命令中包含这些字符时,必须用-e选项。*用while循环来不停地循环这个菜单
while [ 1 ]
do
menu
case $option in
.
.
esac
done
17.1.5 使用select命令,格式如下:
select variable in list
do
commands
done
*list参数是构成菜单的空格分隔的文本选项列表。select命令会在列表中将每个选项作为一个编好号的选项显示,然后为选项显示一个特殊的由PS3环境变量定义的提示符
PS3="Enter option:"
select option in "menu1" "menu2" "menu3" "menu4" "Exit"
do
case $option in
"menu1")
command ;;
.
.
.
*)
clear
echo "Sorry,wrong selection" ;;
esac
done
clear
注意:使用select命令时,储存在变量中的结果值是整个文本字符串而不是跟菜单选项相关联的数字。
17.2.1 dialog包
#####################dialog部件#######################
calendar 提供选择日期的日历
checklist 显示多个选项(其中每个选项都能打开或关闭)
from 构建一个表单(用标签和文本字段来填充)
fselect 提供一个文件选择窗口来浏览选择文件
gauge 显示完成的百分比进度条
infobox 显示一条消息,但不用等待回应
inputbox 提供一个输入文本用的文本表单
inputmenu 提供一个可编辑的菜单
menu 显示可选择的一系列选项
msgbox 显示一条消息,并要求用户选择OK按钮
pause 显示一个进度条来显示特定暂定时间的状态
passwordbox 显示一个文本框输入文本,但会隐藏输入的文本
radiolist 提供一组菜单选项,但只能选择其中一个
tailbox 用tail命令在滚动窗口中显示文件的内容
tailboxbg 跟tailbox一样,但是在后台模式中运行
textbox 在滚动窗口中显示文件的内容
timebox 提供一个选择小时/分钟和秒数的窗口
yesno 提供一个简单的带Yes和No按就的消息
*要在命令行上指定某个特定部件,需要使用双破折号格式:
dialog --widget parameters
其中widget就是部件名,parameters定义了部件窗口的大小以及本键需要的文本
每个dialog部件都提供两种格式的输出:
*)使用STDERR;
*) 使用退出状态码;
*dialog命令的退出状态码决定了用户选择的按钮,如果选择YES或OK,dialog命令会返回退出状态码0.如果选择cancel或no,就会返回1.
*如果部件返回了任何数据,比如菜单选择,那么dialog命令会将数据发送到STDERR,可以将STDERR输出重定向到另一个文件或文件描述符中
$ dialog --inputbox "Enter your age:" 10 20 2>age.txt #这个命令会将文本框中输入的文本重定向到age.txt文件中
1.msgbox部件:在窗口中显示一条简单的消息,并等待用户单击OK按钮后才消失。
$ dialog --msgbox text(在窗口中显示的字符串) height width(窗口大小)如果要在顶部显示一个标题,可以添加--title text参数
$ dialog --title text --msgbox text height width
2.yesno部件:允许用户回答窗口中显示的yes/no问题,在底部生成两个按钮
$ dialog --title "please answer" --yesno "Is this thing on?" 10 20
3.inputbox部件:提供文本框区域输入文本字符串,dialog命令会将字符串的值发给STDERR,必须重定向STDERR来获取输入。
$ dialog --inputbox "Enter your age:" 10 20 2>age.txt
4.textbox部件:生成一个滚动窗口来显示参数中指定的文件中的文本
$ dialog --textbox /etc/passwd 15 45
5.menu部件:允许创建文本菜单的窗口版本,只需要为每个选项提供一个选择标号和文本就行。
$ dialog --menu "Sys Admin Menu" 20 30 10 1 "menu1" 2 "menu2" 3 "menu3" 2>test.txt
*第一个参数定义了菜单的标题,之后两个参数定义宽高,第四个参数定义了一次在窗口中显示的菜单项数(如果后面的项数超过就可以滚动显示)。
*在这些参数后必须添加菜单对(标号 文本)
*dialog命令会将选定的菜单项文本发送到STDERR,根据需要而重定向。
6.fselect部件:
$ dialog --title "Select a file" --fselect $HOME/ 10 50 2>file.txt
*fselect选项后第一个参数是窗口中使用的起始目录位置。
17.2.3在脚本中使用dialog命令
牢记:
*如果有Cancel或No按钮部件,检查dialog命令的退出状态码
*重定向STDERR来获得输出值