即時リフレッシュを減らす

即時リフレッシュを減らす

私は関数の出力をに渡して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

おすすめ記事