このコードを見てください:
while read -t 3 line; do
echo ${line}
done < /opt/data.log
data.log
先入選出方式です。プロセスはここに書いており、コードはそれを読んでユーザーに表示する必要があります。しかし、3秒以内にfifoにもはやデータがない場合は終了したいと思います。
問題は決してタイムアウトしないことです。私はこのfifoに書いて、次のようなものを見せます。
read: 6: Illegal option -t
何が問題なの?
【書き直す】
はい、私は/bin/sh
シンボリックリンクであるshebangを使用していますdash
。に変え/bin/bash
たのに役に立ちませんでした。誰もfifoを開かないと永遠に待ちます。 FIFOのもう一方の端が開いていないときに機能するタイムアウトソリューションが必要です。
ベストアンサー1
バッシュを使っていますか?または他のもの? read -t
kshismです(bashとzshもサポートしていますが、標準ではありません)。
bashでは機能しますが、ダッシュでは機能しません。
$bash -c 'echo foo | bashは同時に-t 3 xxxxを読みます。 金持ち
$ dash -c 'echo foo |また、読み取り-t 3 xxxx; ダッシュ: 1: 読み取り: 無効なオプション -t