今天看书上说到dialog命令,在网上搜了一下,好好借鉴。正文如下:
首先要确保 dialog命令程序已被安装。 由于Fedora中默认没有安装dialog命令程序,
所以 # yum install dialog 进行安装,完了才能使用。
编译过linux内核的朋友都知道在执行make configure时,会弹出一个非常简洁的图形界面来进行linux内核的配置。
如果你想为你的脚本程序增色添彩,dialog工具无疑是个非常好的选择。
dialog工具以一种简洁的方式来润色你的脚本程序,是你的脚本程序看起来更加的友好。
下面我们来看看dialog工具。
dialog工具其实就是一个非常简单的带有各种各样的参数和选项的程序,它可以使显示各种不同类型的图形框,如是/否框、单选框、输入框。脚本程序可以通过dialog的退出状态或标准错误流来获取用户的选择或输入。
在详细展开之前,首先我们来看一个简单的消息框
显示结果如图
可见dialog的使用很easy。
下表列出对话框的主要类型和参数。
除此自外还有许多相同的参数选项,比如--title(指定对话框标题)。
我们来看一个单选框的例子:
命令解析:Check 对话框标题; Select Number 提示信息; 15 对话框高度; 25 对话框宽度; 1、2、3、4 选项编号;
one two three four 选项文本内容; on off 选项状态。
另外对于yes/no对话框我们可以直接利用退出码来获得结果,而对于一些文本输入我们可以利用重定向标准错误流来获取上个命令的退出状态。
下面我们改写《Linux 程序设计》里的一个例子来看下dialog的作用,写一个questions的脚本,使用"./questions"执行
执行前记得用chmod将questions的权限改为可执行
dialog --title "Questionnaire" --msgbox "Welcome to my simple survey" 9 18
dialog --title "Confirm" --yesno "Are you willing to take part?" 9 18
if [$? !=0]; then #yes的返回码为0,$?为上一个命令的退出状态
dialog --infobox "Thank you anyway!" 5 20
sleep 2
dialog --clear # --clear 作用为清屏
exit 0
fi
dialog --title "Questionnaire" --inputbox "Please enter your name" 9 30 2>_1.txt #重定向标准错误输出流(2)到_1.txt
Q_NAME=$(cat _1.txt)
dialog --menu "$Q_NAME,what music do you like best?" 15 30 4 1 "Classical" 2 "Jazz" 3 "Country" 4 "Other" 2>_1.txt
Q_MUSIC=$(cat _1.txt)
if ["$Q_MUSIC" == "1"]; then
dialog --infobox "Good choice!" 5 20
else
dialog --infobox "Thank you anyway" 5 20
fi
sleep 5
dialog --clear
exit 0
贴两张图