2011-01-19 13 views
2

私は無限ループにこのコードを持っている:「読み取り」を使用しているときに、Bashでユーザー入力をクリアするにはどうすればよいですか?

read -a output 
echo ${output[@]} 

コードが画面は次のようになります実行すると:

Hello, World # line where value was given to output (I want this gone) 
Hello, World # echoed output 
[] # <-- cursor waiting for next input 

は、ユーザーが値を入力ラインをクリアする方法はあります?同様に、それを完全に取り除くのと同じように(空白に行を変更するだけでなく、希望の出力にギャップを残すことになります)?

答えて

2

cuu1dl1の機能を持つtputを使用してください。

​​3210
+0

優れています。あなたダ男! – Jonathan

+0

@Jonathan: 'dl1'(行の削除)の代わりに' el'(行の最後まで消去)を使う方が良いでしょう。後者はその行の下のテキストを上にスクロールさせるからです。また、コマンド置換を使って 'tput'の出力を'エコー 'する必要はありません。 'tput cuu1; tput cr; tput el; echo baz123'( 'cr'はあなたが行頭に来ることを保証します) –

+0

ありがとう、Dennis。 dl1メソッドは、ログファイルにリダイレクトした後に、テキストの前に不要な文字を残しました。あなたのやり方は魅力のように機能します。 – Jonathan

0

echo ${output[@]}を削除しないのはなぜですか。配列変数を引用していないので、tput haxを使用した場合と同じ結果になります。

+0

実際の出力は$ {output [@]}だけではなく、配列の内容に連結された追加の書式設定があります。しかし、ありがとう。 – Jonathan

関連する問題