즉각적인 새로고침 감소

즉각적인 새로고침 감소

나는 함수의 출력을 에 전달하고 less잠시 기다렸다가 를 죽이는 스크립트를 작성하고 있습니다 less. 이 모든 작업은 루프 내에서 수행됩니다. 이렇게 하면 less동적으로 업데이트되는 것처럼 보입니다 . 이것은 내 스크립트입니다.

#!/usr/bin/env bash

for i in {0..5}; do
    echo $i | less -c &
    pid=$!
    sleep 2
    kill $pid &>/dev/null
done

이는 예상대로 작동하지만 이후에는 터미널이 응답하지 않게 됩니다(예: 키 입력이 표시되지 않음). 내가 뭘 잘못했나요?

편집하다:글쎄요, 제가 질문한 방식이 혼란스러운 것 같아요. 뮤직 플레이어의 현재 노래를 기반으로 웹사이트에서 가사를 제거하는 스크립트를 작성하려고 합니다. 내가 원하는 방식은 이 스크립트를 스크린 세션 내에서 실행하고 30초마다 자동으로 업데이트되도록 하는 것입니다. 최종 스크립트는 다음과 같습니다.

function get_lyrics()
{
    # function which gets the lyrics based on current song
}

while true; do
    song=$(get_lyrics)
    echo "$song" | less -c &
    pid=$!
    sleep 30
    kill $pid &>/dev/null
done

답변1

스크립트 파일을 만들고 다음 내용을 넣으세요. 파일에 가사를 쓰게 됩니다./tmp/lyrics

while true; do
    get_lyrics >/tmp/lyrics
    sleep 30
done

이제 이 스크립트를 백그라운드로 보내고 다음 명령을 실행하면 원하는 작업을 더 깔끔하게 수행할 수 있습니다.

watch -n 30 less -c /tmp/lyrics

관련 정보