ユーザー入力後にテキストが消えるようにする

ユーザー入力後にテキストが消えるようにする

ユーザーがコンテンツを入力するとすぐに表示されたコンテンツを消去する方法はありますか?

たとえば、次のファイルを使用します。

#!/bin/bash
read -n 1 -p 'how are you ? ' var
if [ "$var" == "y" ]
then
    echo 'Have fun'
else
    echo 'Go to Doctor'
fi

これを実行すると、出力は次のようになります。

how are you ? yHave fun

how are you ?ユーザーがキーを押すとすぐに消えることができるものを探しています。

その後、消えて印刷します。Have fun

だから私は上記のプログラムの最終出力が次のようになりたいと思います。

Have fun

注:また、シェル画面に印刷されたこのスクリプトの上にある内容は削除しないでください。

使っていますbash

ベストアンサー1

キャリッジリターン(\r)を使用してください。この特殊文字(機械式タイプライター時代の文字)は、カーソルを行の先頭に戻します。その後、削除するメッセージと同じくらいのスペースが必要になり(これを行うとメッセージが上書きされます)、次のメッセージを印刷する前に2番目のキャリッジリターンを使用して最初に戻ります。このような:

#!/bin/bash
echo foo
read -n 1 -p 'how are you ? ' var
if [ "$var" == "y" ]
then
    printf '\r                \rHave fun\n'
else
    printf '\r                \rGo to Doctor\n'
fi

上記のスクリプトを実行すると、次のものが印刷されます。

$ foo.sh
foo
Have fun        

おすすめ記事