Atualizando menos em tempo real

2

Estou escrevendo um script no qual eu passo a saída de uma função para less , aguardo um tempo e mato less . Tudo isso feito dentro de um loop. Isso faz com que pareça que less está atualizado na hora. Este é o meu script:

#!/usr/bin/env bash

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

Isso funciona como esperado, mas o tipo de terminal não responde (os pressionamentos de tecla não são visíveis, por exemplo) depois disso. O que estou fazendo errado?

EDIT: Ok, acho que a maneira como fiz a pergunta foi confusa. Estou tentando escrever um roteiro que raspe as letras de um site de acordo com a música atual no tocador de música. A maneira que eu quero fazer isso, eu vou manter este script em execução em uma sessão de tela, e eu quero que seja atualizado automaticamente a cada 30 anos ou mais. O script final seria parecido com:

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
    
por metwarp 10.01.2013 / 19:50

1 resposta

1

Crie um arquivo de script e coloque o seguinte aqui. Ele irá escrever letras em um arquivo /tmp/lyrics

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

Agora, envie esse script em segundo plano e emita o seguinte, que fará o que você está tentando fazer, mas de uma maneira mais clara.

watch -n 30 less -c /tmp/lyrics
    
por 10.01.2013 / 21:12

Tags