私のスクリプトには単純な問題があります。同じ画面に行スクリプトを表示し、上記の最後の情報を表示しないでください。私のデモコードをご覧ください。
#!/bin/bash
if [ -t 0 ]; then stty -echo -icanon -icrnl time 0 min 0; fi
#result=`sensors -A`
count=0
keypress=''
echo -ne "linha 1\nLinha 2\n " > /tmp/temp_script.log
while [ "x$keypress" = "x" ]; do
clear
let "count++"
output="$(cat /tmp/temp_script.log)"
printf "$output"\\b
echo -en $count\\n
sleep 1
keypress="`cat -v`"
done
if [ -t 0 ]; then stty sane; fi
exit 0
結果コード:
最初の例の複数行を作成せずに、2番目の例のように関連情報のループのみを表示するようにこの情報を表示する必要があります。
どうすればいいですか?
など、ターミナルには前のループの感じがなく、今印刷されている内容だけが残ります。
答え1
仮説clear
画面を本当に消去すると、表示されたスクリプト自体は最初のスクリーンショットを生成しません。追加のプロセスがリンクされている場合は、/tmp/temp_script.log
いくつかの操作を実行できます。
一方、端末から画面が消去されない場合、これは問題の一部です。そのカラーラインはスクリプトを実行するように求められ、画面の上部に残したい場合があります。
TERM
通常、端末の説明に対応する適切な値を設定します。- 「適切な」端末の説明は、画面を消去する方法を教えてくれます。
- 副作用で(慣習に従って)画面を消去すると、カーソルは画面の左上に移動しますが、
- 画面の左上から画面を消去すると、カラーラインも消去されます。可能維持したい)
- 2行目から消去するには(ほとんどの端末で)、次のようにします。
printf '\033[2H\033[J'']
または
出力カップ1 0 入力の編集
- しかし、最初にメッセージが画面の上部に表示されない場合は、何も残らないことを覚えておいてください。以前は画面上部はタッチされません。
問題の別の部分は、これらの3行が繰り返し印刷されて画面を引き出すことです。カウンタを印刷したい位置にカーソルを移動するように変更できます。たとえば、次のようになります。
printf '\033[4H']
または
排出カップ3 0
すべてをまとめると、スクリプトは次のようになります(printf
ユーザーや端末の説明に問題があるようです)。TERM
#!/bin/bash if [-t 0]; then stty -echo -icanon -icrnl時間0分0; fe #result=`センサー-A` 個数=0 printf '\033[2H\033[J''] ボタン= '' エコ「リンハ1」 エコ「リンハ2」 while [ "x$keypress" = "x" ]; 「数字++」にしておきます。 printf '\033[4H'] エコ$count 睡眠1 キー="`cat-v`" 完璧 [-t 0]なら正気です。 0番出口
追加資料: