timeout 0.6s $(tail -f ./file.txt | grep -qA2 --line-buffered "detail: " | grep -E -- "$KeyNumbers")
したがって、タイムアウトは期待どおりに機能しません。 tailに一致する項目がない場合は、0.6秒後にキャンセルし、一致する項目が見つかりましたが、終了状態になるためにタイムアウトした場合は続行したいと思います。代わりに、$(tail...) 部分は現在以降以降のみ続きます。一致するものが見つかった場合にポイントを指定します。
Echo$?が終了コードを見つけられませんでした。タイムアウトを制御できないようです。
私も尾を$()で囲まないようにしましたが、結果は悪かったです。私がここで何を見逃しているのでしょうか?より良い解決策はありますか?
解決策:
@lukemassa
助けてくれてありがとう。作業結果は次のとおりです。
timeout 0.6s tail -f ./file.txt | grep -qA2 --line-buffered -E -- "detail: $KeyNumbers"
彼らの投稿はこれを説明し、最初のコマンドが-q(本質的に出力を抑制する)である場合、2番目のgrepコマンドのポイントについてのコメントで提起された質問を通して、スクリプトで以前と同じことをしないことに気づきました。これは他の要素と組み合わされます。
ベストアンサー1
$()
シェルは内容を評価するので、次のようになります。
timeout 0.6s "stuff from the file"
その後、実行を試みて失敗します。
試してみました:
timeout 0.6s tail -f ./file.txt | grep -qA2 --line-buffered "detail: " | grep -E -- "$KeyNumbers"