대시보드를 표시하는 휩 대화 상자가 있습니다.
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
결과는 서브셸에서 얻어지기 때문에 임시 파일을 통해 결과를 다시 전달해야 할 수도 있습니다. 그러나 tmux에서 더 많은 명령을 계속 사용하여 스크립트가 진행됨에 따라 창을 만들고 삭제할 수도 있습니다.