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