我有一个鞭子对话框,其中显示仪表板:
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 中使用更多命令,随着脚本的进展创建和删除窗口。