1、如果有Cancel或No按钮,检查dialog命令的退出状态码;
2、重定向STDERR来获得输出值。
如果遵循了这两个规则,立刻就能够拥有具备专业范儿的交互式脚本。为了更好的让大家有更深入的了解,小编在这里给大家举了一个例子,它详细地介绍了使用dialog部件来生成系统管理菜单的过程,请看以下内容。
$ cat menu3
#!/bin/bash
# using dialog to create a menu
temp=$(mktemp -t test.XXXXXX)
temp2=$(mktemp -t test2.XXXXXX)
function diskspace {
df -k > $temp
dialog --textbox $temp 20 60
}
function whoseon {
who > $temp
dialog --textbox $temp 20 50
}
function memusage {
cat /proc/meminfo > $temp
dialog --textbox $temp 20 50
}
while [ 1 ]
do
dialog --menu "Sys Admin Menu" 20 30 10 1 "Display disk space" 2
"Display users" 3 "Display memory usage" 0 "Exit" 2> $temp2
if [ $? -eq 1 ]
then
break
fi
selection=$(cat $temp2)
case $selection in
1)
diskspace ;;
2)
whoseon ;;
3)
memusage ;;
0)
break ;;
*)
dialog --msgbox "Sorry, invalid selection" 10 30
esac
done
rm -f $temp 2> /dev/null
rm -f $temp2 2> /dev/null
$
这段脚本用while循环和一个真值常量创建了个无限循环来显示菜单对话。这意味着,执行完每个函数之后,脚本都会返回继续显示菜单。
由于menu对话包含了一个Cancel按钮,脚本会检查dialog命令的退出状态码,以防用户按下Cancel按钮退出。因为它是在while循环中,所以退出该菜单就跟用break命令跳出while循环一样简单。
脚本用mktemp命令创建两个临时文件来保存dialog命令的数据。第一个临时文件$temp用来保存df和meminfo命令的输出,这样就能在textbox对话中显示它们了(如下图所示)。第二个临时文件$temp2用来保存在主菜单对话中选定的值。
用textbox对话选项显示的meminfo命令输出
以上便是江西网络公司为大家介绍的在Linux系统中dialog命令的使用方法,如果还有哪些不太明白的地方,可随时来电和我们联系。此外,想了解更多关于微信开发、电商购物网站开发、APP开发等方面的知识的朋友,欢迎关注百恒网络网站动态,更多惊喜与您分享!