여러 행의 결과를 표시하고 동적으로 업데이트하는 방법

여러 행의 결과를 표시하고 동적으로 업데이트하는 방법

파일의 줄 수를 반복적으로 계산하고 해당 숫자를 표시하며 이전 값을 캐리지 리턴으로 지속적으로 덮어써 동적으로 업데이트하는 스크립트가 있습니다.

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

하지만 동시에 다른 두 파일에서도 비슷한 작업을 수행하고 싶습니다. 이 같은:

파일 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

관련 정보