shell编程,桌面环境中的脚本,select命令,dialog包的使用,kdialog、gdialog、zenity
在脚本中使用菜单:
例:
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 speac"
echo -e "\t2.Display logged On user"
echo -e "\t3.Display memory usage"
echo -e "\t0.Exit program\n\n"
echo -en "\t\tEnter option:"
read -n 1 option
}
while [ 1 ]
do
menu
case $option in
0) break;;
1) diskspace;;
2) whoseon;;
3) memusage;;
*) clear ; echo "Sory, wrong selection";;
esac
echo -en "\n\n\t\t\tHit any key to continue"
read -n 1 line
done
clear
使用select命令:
select variable in list
do
commands
done
list 是空格分格的选项列表,如:"one" "two" "three",select会自动生成带编号的选项列表,列表必须为一行,一行不够用行接符“\”拼接。
PS3 特殊提示符环境变量,用来接收输入的编号
例:
function diskspace {
clear
df -k
}
function whoseon {
clear
who
}
function memusage {
clear
cat /proc/meminfo
}
PS3="Enter option: "
select option in "Exit" "diskpace" "whoseon" "memusage"
do
case $option in
"Exit")
break;;
"diskpace")
diskspace;;
"whoseon")
whoseon;;
"memusage")
memusage;;
*)
clear;
echo "Sorry ,wrong selection";;
esac
done
clear
注意:option中的值是列表中的值
使用dialog包制作图形化脚本:
几种常用的部件:
msgbox 显示消息
dialog --title "This is title" --msgbox "This is content" 10 20 最后两个参数是窗体高度和宽度
yesno 选择框
dialog --title "please answer" --yesno "Is this ting on?" 10 20
inputbox 输入框
dialog --inputbox "Enter you age:" 10 20 2>demo.txt 使用错误重定向接收输入,使用$?来判断是选择ok还是cancel
textbox 文本输入框
dialog --textlog /etc/passwd 15 45
menu 菜单部件
dialog --menu "菜单名称" 高度 宽度 菜单数 1 "menu1" 2 "menu2" 3 "menu3" 2>demo.txt 使用错误重定向接收输入
fselect 文件选择
dialog --title "标题" --fselect $HOME/ 10 50 2>demo.txt $HOME这个是初始目录然后是高度和宽度错误输出
在脚本中使用dialog命令:
例:
temp=$(mktemp -t test.XXXXXX)
temp2=$(mktemp -t test.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 meny" 20 30 10 1 "diskspace" 2 "whoseon" 3 "memusage" 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 $temp 2> /dev/null
其他图形化工具:
KDE环境的kdialog包
GNOME环境的gdialog和zenity