STDINから読み込み、すぐにデータを使用するか(続きを読みながら)、zbarを使用してURLを開きます。

STDINから読み込み、すぐにデータを使用するか(続きを読みながら)、zbarを使用してURLを開きます。

STDINで行を読み取って処理する必要があります。次のようにできます。

<print lines to STDOUT> | while read line; do
   <process $line>
done

しかし、これが意味するのは最初すべてのラインが印刷されパイプされます。それから処理されます。次の行がSTDOUTに送信される前に、各行をすぐに処理したいと思います。

行が作成されたとき(ログファイルなど)を処理する必要がある場合に便利です。私の使命はシバ(警告!このページはFirefoxと競合しています...)複数のQRコードをスキャンして、FirefoxでそのURLを開きます。実行している場合は、zbarcam --rawWebカメラを使用して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はこれを行うたびに新しいタブを開きます。

おすすめ記事