web-dev-qa-db-ja.com

ホイップテールゲージのテキストを変更/編集する

次のようなものを使用して、ホイップテールゲージの進行状況を変更できることを知っています。

{
    for ((i = 0 ; i <= 100 ; i+=20)); do
        sleep 1
        echo $i
    done
} | whiptail --gauge "Please wait while installing" 6 60 0

しかし、ホイップテールボックスのテキストを編集/変更できるかどうか疑問に思っています(したがって、Please wait while installingテキストを別のものに変更してください。

私の現在の解決策は、新しいホイップテールボックスを立ち上げることですが、古いものが閉じてから新しいものが開くまでの間に顕著なちらつきがあります。ホイップテールボックスのテキストを更新できない場合、代わりにこのちらつきを減らす/取り除くことは可能ですか?

3
user2370460

これを試して:

#!/bin/bash

msgs=( "Downloading" "Verifying" "Unpacking" "Almost Done" "Done" )

for i in {1..5}; do
  sleep 1
  echo XXX
  echo $(( i * 20 ))
  echo ${msgs[i-1]}
  echo XXX
done |whiptail --gauge "Please wait while installing" 6 60 0
5
adonis

ちらつきは、(a)端末の代替/通常画面への切り替え、および(b)表示のクリアによるものです。

通常画面と代替画面の切り替えに使用される制御シーケンスがない端末の説明を選択することで、最初の部分を削除できます。通常、これらは端末の説明にあるsmcupおよびrmcup機能であるため、...

infocmp >foo
vi
...remove the assignments to `rmcup` and `smcup`
tic foo
...with ncurses, that likely creates an entry in `$HOME/.terminfo`

dialogは、オプションでこれらの機能を抑制することでこれを処理します(つまり、--keep-tite); whiptailは代替画面について何も知りません。

参考文献:

1
Thomas Dickey