複数行の結果を表示して動的に更新する方法

複数行の結果を表示して動的に更新する方法

ファイルの行数を繰り返し計算し、その数値を表示し、古い値をキャリッジリターンで継続的に上書きして動的に更新するスクリプトがあります。

echo "Checking in progress:"
while true ; do
    outcount=$(cat /tmp/curl-check-result.txt | wc -l)
    echo -ne "Total checked IPs:" '\t'`cat /tmp/curl-check-result.txt | wc -l`'\r'
    if [[ $outcount -eq $numips ]]; then
        break
    fi
done

しかし、同時に他の2つのファイルでも同様のことをしたいと思います。このような:

ファイル1の計算:計算
ファイル2の計算:計算
カウントファイル3:計算

スクリプトに同様のコードセクションを追加しようとすると、出力行は互いに隠れます。どうすればいいですか?

ベストアンサー1

man tputオプションのパラメータで "capname"を提供できることを確認してください。

man terminfo (5)「capname」として使用できる機能が何であるかを確認してください。多くの機能があります。

これを行う方法のデモは次のとおりです。

while true; do
    var1=$((var1+1))
    var2=$((var2+2))
    var3=$((var3+3))

    printf "%s\n%s\n%s\n" "$var1" "$var2" "$var3"
    [ $var1 -ge 100 ] && break

    sleep 0.1
    # move the cursor up 3 lines
    tput cuu 3
    # clear to the end of screen
    tput ed
done

おすすめ記事