STDINで行を読み取って処理する必要があります。次のようにできます。
<print lines to STDOUT> | while read line; do
<process $line>
done
しかし、これが意味するのは最初すべてのラインが印刷されパイプされます。それから処理されます。次の行がSTDOUTに送信される前に、各行をすぐに処理したいと思います。
行が作成されたとき(ログファイルなど)を処理する必要がある場合に便利です。私の使命はシバ(警告!このページはFirefoxと競合しています...)複数のQRコードをスキャンして、FirefoxでそのURLを開きます。実行している場合は、zbarcam --raw
Webカメラを使用してQRコードをスキャンしてください。 QRコードが見つかると、URLはすぐにSTDOUTに印刷されますが、zbarcamは終了しません。だから私はこの行を読んで上下に移動したいと思いますfirefox $url
(しかし他のURLを待っていません)。
私が見つけた離れたしかし、これを簡単に行うことはできないのだろうか。デフォルトでは、彼はzbarcam
一時ファイルに出力を書き、その中に何かが書き込まれるのを待ちます。
zbarcam --raw > tmpfile &
...
while [[ ! -s $tmp ]] ; do
sleep 1
done
一時ファイルやループなしでこれを実行できますかsleep 1
?
ベストアンサー1
最初の試みは成功しました。
tail -f temp.file | while read LINE; do firefox $LINE; done
次に、他の端末では、tail -fがSTDOUTに1行を印刷するように一時ファイルに追加します。
echo 'google.com' >> temp.file
Firefoxはこれを行うたびに新しいタブを開きます。