关闭 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或者任何其它在纯终端窗口显示对话框的工具。

    上一篇返回首页 下一篇

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

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    商业智能成CIO优先关注点 技术落地方显成效(1)

    用linux安装MySQL时产生问题破解

    JAVA中关于Map的九大问题

    windows 7旗舰版无法使用远程登录如何开启telnet服务

    Android View 事件分发机制详解

    MySQL用户变量的用法

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

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