ユーザーがコンテンツを入力するとすぐに表示されたコンテンツを消去する方法はありますか?
たとえば、次のファイルを使用します。
#!/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