次のようなものを使用して、ホイップテールゲージの進行状況を変更できることを知っています。
{
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
テキストを別のものに変更してください。
私の現在の解決策は、新しいホイップテールボックスを立ち上げることですが、古いものが閉じてから新しいものが開くまでの間に顕著なちらつきがあります。ホイップテールボックスのテキストを更新できない場合、代わりにこのちらつきを減らす/取り除くことは可能ですか?
これを試して:
#!/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
ちらつきは、(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
は代替画面について何も知りません。
参考文献: