关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » HTML5 »如何在 Bash Shell 脚本中显示对话框

    如何在 Bash Shell 脚本中显示对话框

    2015-06-02 00:00:00 出处:linux.cn
    分享

    这个教程给出几个如何使用类似zenity和whiptail的工具在Bash Shell 脚本中提供消息/对话框的例子。使用这些工具,你的脚本能够告知用户当前程序运行的状态并能与用户进行交互。这两个工具的不同之处在于显示消息框或者对话框的方式。Zenity用GTK工具包创建图形用户界面,而whiptail则在终端窗口内创建消息框。

    Zenity 工具

    在Ubuntu中安装zenity,运行:

    sudo apt-get install zenity

    用zenity创建消息框或者对话框的命令是不言自明的,我们会给你提供一些例子来参考。

    创建消息框

    zenity --info --title "Information Box" --text "This should be information" --width=300 --height=200

    如何在Bash Shell脚本中显示对话框

    创建 Yes/No 询问对话框

    zenity --question --text "Do you want this " --ok-label "Yeah" --cancel-label="Nope"

    如何在Bash Shell脚本中显示对话框

    创建输入框并将输入值保存到变量中

    a=$(zenity --entry --title "Entry box" --text "Please enter the value" --width=300 --height=200)
    echo $a

    如何在Bash Shell脚本中显示对话框

    输入后,值会保存在变量 $a 中。

    这是一个获取用户姓名并显示的实际事例。

    #!/bin/bash
    #
    # This script will ask for couple of parameters
    # and then continue to work depending on entered values
    #
    
    # Giving the option to user
    zenity --question --text "Do you want to continue "
    
    # Checking if user wants to proceed
    [ $  -eq 0 ] || exit 1
    
    # Letting user input some values
    FIRSTNAME=$(zenity --entry --title "Entry box" --text "Please, enter your first name." --width=300 --height=150)
    LASTNAME=$(zenity --entry --title "Entry box" --text "Please, enter your last name." --width=300 --height=150)
    AGE=$(zenity --entry --title "Entry box" --text "Please, enter your age." --width=300 --height=150)
    
    # Displaying entered values in information box
    zenity --info --title "Information" --text "You are ${FIRSTNAME} ${LASTNAME} and you are ${AGE}(s) old." --width=300 --height=100

    这些是运行前面脚本的截图。

    如何在Bash Shell脚本中显示对话框

    框1

    如何在Bash Shell脚本中显示对话框

    输入框

    如何在Bash Shell脚本中显示对话框

    输入框

    如何在Bash Shell脚本中显示对话框

    输入框

    如何在Bash Shell脚本中显示对话框

    信息框

    别忘了查看也许能帮助到你的有用的zenity 选项。

    Whiptail 工具

    在Ubuntu上安装whiptail,运行

    sudo apt-get install whiptail

    用whiptail创建消息框或者对话框的命令也是无需解释的,我们会给你提供一些基本例子作为参考。

    创建消息框

    whiptail --msgbox "This is a message" 10 40

    如何在Bash Shell脚本中显示对话框

    创建 Yes/No 对话框

    whiptail --yes-button "Yeah" --no-button "Nope" --title "Choose the answer" --yesno "Will you choose yes " 10 30

    如何在Bash Shell脚本中显示对话框

    创建有缺省值的输入框

    whiptail --inputbox "Enter your number please." 10 30 "10"

    如何在Bash Shell脚本中显示对话框

    尝试使用输入值要注意的一点是whiptail用stdout显示对话框,用stderr输出值。这样的话,假如你用 var=$(…),你就根本不会看到对话框,也不能获得输入的值。解决方法是交换stdout和stderr。在whiptail命令后面添加 3>&1 1>&2 2>&3 就可以做到。你想获取输入值的任何whiptail命令也是如此。

    创建菜单对话框

    whiptail --menu "This is a menu. Choose an option:" 20 50 10 1 "first" 2 "second" 3 "third"

    如何在Bash Shell脚本中显示对话框

    这是一个请求用户输入一个文件夹的路径并输出它的大小的 shell 脚本。

    #!/bin/bash
    #
    #
    
    # Since whiptail has to use stdout to display dialog, entered value will
    # be stored in stderr. To switch them and get the value to stdout you must
    # use 3>&1 1>&2 2>&3
    FOLDER_PATH=$(whiptail --title "Get the size of folder" /
    --inputbox "Enter folder path:" /
    10 30 /
    "/home" /
    3>&1 1>&2 2>&3)
    
    if [ -d $FOLDER_PATH ]
    then
    size=$(du -hs "$FOLDER_PATH" | awk '{print $1}')
    whiptail --title "Information" /
    --msgbox "Size of ${FOLDER_PATH} is ${size}" /
    10 40
    elif [ -f $FOLDER_PATH ]
    then
    whiptail --title "Warning!!!" /
    --msgbox "The path you entered is a path to a file not a folder!" /
    10 40
    else
    whiptail --title "Error!!!"
    --msgbox "Path you entered is not recognized. Please try again" /
    10 40
    fi

    这是之前例子的一些截图:

    如何在Bash Shell脚本中显示对话框

    输入框

    如何在Bash Shell脚本中显示对话框

    消息框

    假如你在终端下工作,帮助手册总是有用的。

    结论

    选择合适的工具显示对话框取决于你期望在桌面机器还是服务器上运行你的脚本。桌面机器用户通常使用GUI窗口环境,也可能运行脚本并与显示的窗口进行交互。然而,假如你期望用户是在服务器上工作的,(在没有图形界面时,)你也许希望能确保总能显示,那就使用whiptail或者任何其它在纯终端窗口显示对话框的工具。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    如何从 Windows 11 中完全删除/卸载 OneNote?无解!

    抖音安全与信任开放日:揭秘推荐算法,告别单一标签依赖

    ultraedit编辑器打开文件时,总是提示是否转换为DOS格式,如何关闭?

    IT头条

    华为Pura80系列新机预热,余承东力赞其复杂光线下的视频拍摄实力

    01:28

    阿里千问3开源首战告捷:全球下载破千万,国产AI模型崛起新高度!

    01:22

    DeepSeek R1小版本试升级:网友实测编程能力已达到国际一线水平

    23:15

    NVIDIA 与 Dell 合作,大规模交付 Blackwell AI 系统

    20:52

    Cerebras 以最快的 Llama 4 Maverick 性能引领 LLM 推理竞赛

    20:51

    技术热点

    PHP中的随机性——你觉得自己幸运吗?

    搞定Ubuntu Linux下WPA无线上网

    Java使用内存映射实现大文件的上传

    MySQL安全性指南

    MySQL两项性能的基本测试浅谈

    教您使用UniqueIdentifier选取SQL Server主键

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。