图形化桌面环境中的脚本编程

时间:2021-07-09 04:57:58
#创建文本菜单
    创建菜单布局
        $
        clear
        echo
        echo -e "\t\t\tSys Admin Menu\n"
        echo -e "\t1. Display disk space"
        echo -e "\t2. Display logged on users"
        echo -e "\t3. Display memory usage"
        echo -e "\t0. Exit menu\n\n"
        echo -en "\t\tEnter option: "
        $
    创建菜单函数
        $
        function diskspace {    -- 一个空函数。只有一条echo输出语句
        clear    -- 函数从 clear 命令开始。这样你就能在一个干净的屏幕上执行该函数,不会受到原先菜单的干扰。
        echo "This is where the diskspace commands will go"
        }
        function menu {    -- 将菜单布局本身作为一个函数来创建
        clear
        echo
        echo -e "\t\t\tSys Admin Menu\n"
        echo -e "\t1. Display disk space"
        echo -e "\t2. Display logged on users"
        echo -e "\t3. Display memory usage"
        echo -e "\t0. Exit program\n\n"
        echo -en "\t\tEnter option: "
        read -n 1 option
        }
        menu    -- 呈现菜单布局
        $
    添加菜单逻辑
        menu
        case $option in
        0)
            break ;;
        1)
            diskspace ;;
        2)
            whoseon ;;
        3)
            memusage ;;
        *)
            clear
            echo "Sorry, wrong selection";;
        esac
    整合shell脚本菜单
        $
        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 space"
            echo -e "\t2. Display logged on users"
            echo -e "\t3. Display memory usage"
            echo -e "\t0. Exit program\n\n"
            echo -en "\t\tEnter option: "
            read -n 1 option
        }
        while [ 1 ]    -- 1相当于一个无限循环,通过break中断当前循环
        do
            menu
            case $option in
            0)
                break ;;
            1)
                diskspace ;;
            2)
                whoseon ;;
            3)
                memusage ;;
            *)
                clear
                echo "Sorry, 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    -- list 参数是由空格分隔的文本选项列表
            do
                commands
            done
        $
        function diskspace {
            clear
            df -k
        }
        function whoseon {
            clear
            who
        }
        function memusage {
            clear
            cat /proc/meminfo
        }
        PS3="Enter option: "    -- 显示一个由 PS3 环境变量定义的特殊提示符
        select option in "Display disk space" "Display logged on users" "Display memory usage" "Exit program"
            -- select 语句中的所有内容必须作为一行出现
        do
            case $option in
            "Exit program")    
                break ;;
            "Display disk space")
                diskspace ;;
            "Display logged on users")
                whoseon ;;
            "Display memory usage")
                memusage ;;
            *)
                clear
                echo "Sorry, wrong selection";;
            esac
        done
        clear        
        $
#制作窗口
    需要dialog包,无法执行下载安装(略)
#使用图形
    KDE环境
        需要kdialog包
    GNOME环境
        zenity窗口部件
            选 项                                  描 述
            --calendar         显示一整月日历
            --entry            显示文本输入对话窗口
            --error            显示错误消息对话窗口
            --file-selection   显示完整的路径名和文件名对话窗口
            --info             显示信息对话窗口
            --list             显示多选列表或单选列表对话窗口
            --notification     显示通知图标
            --progress         显示进度条对话窗口
            --question         显示yes/no对话窗口
            --scale            显示可调整大小的窗口
            --text-info        显示含有文本的文本框
            --warning          显示警告对话窗口
        如:zenity --calendar   -- 图形化显示日历