【问题标题】:Display a splash screen or dialog box from bash script while script is running在脚本运行时从 bash 脚本显示启动画面或对话框
【发布时间】:2019-05-18 06:26:20
【问题描述】:

我想在我的脚本在后台运行时创建一个启动屏幕/活动对话框,以通知用户正在发生的事情。我的脚本文件启动了本地应用程序的不同组件,并且有一堆用户不需要看到/不会理解的单词和内容。我知道如何让脚本在后台运行,但我想知道如何在每个组件启动后显示一个对话框、新终端窗口、通知或类似的东西让用户知道。

例如,我有 4 个组件,所以框会出现并说:

组件 1 of 4 成功启动..

4 个组件中的第 2 个组件已成功启动..

等等……

感谢任何帮助,因为我已经搜索了一段时间但没有运气。 要添加的一件事是,我能够使用以下代码打开一个新的终端窗口: /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal &

这很好,但是当我回显时,它仍然会转到第一个。

【问题讨论】:

  • 仅将这些消息打印到当前 shell 有什么问题?
  • 很多 种不同的 dialog 工具可用于此目的。哪一个适合您的目的是一个工具选择问题,我们在这里不允许这些问题;但是,您介意找到invisible-island.net/dialog 一个合理的起点,因为虽然它是由其中一个工具的作者编写的,但它链接到其他几个工具(Zenitykdialog、gdialog、whiptail 等)。
  • @BenjaminW。当前 shell 中发生的事情太多了用户将无法理解发生了什么,它看起来很乱,无论我在那里打印什么都会很快丢失
  • @CharlesDuffy 因为这将用于多个用户/客户端,所以我不希望每个人都必须先下载对话工具才能运行脚本,但是谢谢!

标签: bash macos terminal sh tput


【解决方案1】:

您也可以通过启动通知消息来通知用户:

osascript -e 'display notification "hello"'

甚至是一个对话框,不过这会等待用户点击“确定”按钮:

osascript -e 'display alert "Hello"'

例子:

#!/bin/bash

osascript -e 'display notification "Component 1 of 4 successfully started.." with title "in progress"'
sleep 2
osascript -e 'display notification "Component 2 of 4 successfully started.." with title "in progress"'
sleep 2
osascript -e 'display alert "Processing done."'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 2017-11-04
    相关资源
    最近更新 更多