想必大家都知道,在shell脚本中,zenity表现良好。但是,zenity没有沿袭dialog和kdialog中所采用的选项惯例,因此,将已有的交互式脚本迁移到zenity上要花点工夫。 在将系统管理菜单从kdialog迁移到zenity的过程中,需要对部件定义做大量的工作。那么在shell脚本中如何使用zenity 呢?下面请看南昌网络公司百恒网络为大家做个介绍:
$cat menu5
#!/bin/bash
# using zenity to create a menu
temp=$(mktemp -t temp.XXXXXX)
temp2=$(mktemp -t temp2.XXXXXX)
function diskspace {
df -k > $temp
zenity --text-info --title "Disk space" --filename=$temp
--width 750 --height 10
}
function whoseon {
who > $temp
zenity --text-info --title "Logged in users" --filename=$temp
--width 500 --height 10
}
function memusage {
cat /proc/meminfo > $temp
zenity --text-info --title "Memory usage" --filename=$temp
--width 300 --height 500
}
while [ 1 ]
do
zenity --list --radiolist --title "Sys Admin Menu"
--column "Select" --column "Menu Item" FALSE "Display diskspace" FALSE "Display users"
FALSE "Display memory usage" FALSE "Exit" > $temp2
if [ $? -eq 1 ]
then
break
fi
selection=$(cat $temp2)
case $selection in
"Display disk space")
diskspace ;;
"Display users")
whoseon ;;
"Display memory usage")
memusage ;;
Exit)
break ;;
*)
zenity --info "Sorry, invalid selection"
esac
done
$
由于zenity并不支持菜单对话窗口,我们改用单选列表窗口来作为主菜单,如下图所示。 该单选列表用了两列,每列都有一个标题:第一列包含用于选择的单选按钮,第二列是选项文本。单选列表也不用选项里的标号。当选定一个选项时,该选项的所有文本都会返回到 STDOUT。这会让case命令的内容丰富一些。必须在case中使用选项的全文本。如果文本中有任何空格,你需要给文本加上引号。
使用zenity包,你还可以给GNOME桌面上的交互式shell脚本带来一种Windows式的体验。 对于在脚本中使用zenity 的方法你是否掌握了呢?如果还有哪些不太明白的地方,可随时来电和我们联系,百恒网络专业为您解答!此外,如有需要南昌网站建设、APP开发、微信开发等服务的朋友,可随时来电和我们联系,我们随时为你效劳!