是否可以定期刷新鞭尾对话框?

是否可以定期刷新鞭尾对话框?

我有一个鞭子对话框,其中显示仪表板:

source ../script/includes/tasks

pick_task () {
    local options=(
        "$LOGS_TASK" "Check the logs of a service"
        "$KILL_TASK" "Kills a service"
        "$KILL_ALL_TASK" "Kills all services"
        "$SELECT_TASK" "Allows you to select the services you want to run" 
    )

    local menu_height="${#options[@]}"
    local dialog_height=$((menu_height + 9))
    local dialog_width=80

    result=$(whiptail --title "Dashboard" --menu "What do you want to do?" "$dialog_height" "$dialog_width" "$menu_height" "${options[@]}" 3>&1 1>&2 2>&3)
    echo $result
}

这工作正常,但我还想在此动态刷新的窗口中显示一些附加信息。是否可以在打开时刷新此对话框?

答案1

在同一终端中显示 2 个或更多命令的一种简洁方法是使用多路复用器,例如tmux.例如,给出命令:

tmux new-session -s mysession 'watch -n 1 date' \
   ';' split-window -v -p 50 -t 0 './myscript'

在终端中将其(垂直,-v)分成相等的两半(50%,-p 50),并在上半部分运行命令,在下半部分watch运行脚本。myscript后者将基于您当前的脚本。进行一个简单的测试:

#!/bin/bash
result=$(whiptail --menu text 10 40 3 taga a tagb bb tagc ccc 3>&1 1>&2 2>&3)
tmux kill-session

请注意带引号的分号 ( ';'),因为它是 的参数tmux,而不是 shell 的参数。由于结果是在子 shell 中获得的,因此您可能需要通过临时文件将其传回。但您也可以继续在 tmux 中使用更多命令,随着脚本的进展创建和删除窗口。

相关内容