在脚本中使用菜单:

例:

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