2016-12-02 28 views
0

tput cuu 1 && tput elは、複数の場合には非常によく動作しますecho。しかし、readで印刷された行をどのように置き換えるのですか?tputを使用して読み取りによって印刷された行を上書きする方法

echo "First line..." 
read -p "Press any key to overwrite this line... " -n1 -s 
tput cuu 1 && tput el 
echo "Second line. read replaced." 

出力上の例:

First line... Second line. read replaced.

Iが最終的な結果はになりたい:

First line... Second line. read replaced.

+0

'tput cuu1'はカーソルを1つ上に移動しますが、行はそのまま残ります。カーソルも左に移動する必要があります。 – alvits

+0

@alvitsは基本的に 'tput el'で行全体を一掃するとは思わないのですか? – Luke

+0

「el」は、現在位置からの行末を消去します。 – alvits

答えて

2

コードが列0にカーソルを移動していません。

シンプルソルトreadプロンプトをtput scで表示させる前に、カーソル位置を保存することです。

ユーザー入力を読み終えたら、tput rcでカーソル位置を復元できます。

あなたのコードは、これを一見するべきです。

echo "First line..." 
tput sc 
read -p "Press any key to overwrite this line... " -n1 -s 
tput rc 1; tput el 
echo "Second line. read replaced." 

これが役立ちます。

+0

@alvitsありがとう、完璧に動作します! :) – Luke

関連する問題