Bash - 尾部问题的“超时”

Bash - 尾部问题的“超时”
timeout 0.6s $(tail -f ./file.txt | grep -qA2 --line-buffered "detail: " | grep -E -- "$KeyNumbers")

所以超时没有按预期发挥作用。我希望它在 0.6 秒后如果 tail 没有匹配则取消,如果找到匹配但超时以具有退出状态则继续...但相反,如果 $(tail...) 部分当前仅继续经过此点找到匹配项。

echo $? 也没有找到退出代码,好像超时无法控制?

我也尝试过不用 $( ) 括起尾部,结果更糟。我在这里缺少什么?有更好的解决方案吗?

解决方案:

谢谢@lukemassa您的帮助。工作结果是:

timeout 0.6s tail -f ./file.txt | grep -qA2 --line-buffered -E -- "detail: $KeyNumbers"

他们的帖子解释了这一点,并且在评论中提出了第二个 grep 命令的意义问题,如果第一个命令是 -q (本质上抑制输出),这让我意识到我没有像以前在脚本中那样将它们组合起来其他元素。

答案1

$()shell 会评估其中的内容,因此变成

timeout 0.6s "stuff from the file"

然后将尝试执行并失败。

你有没有尝试过:

timeout 0.6s tail -f ./file.txt | grep -qA2 --line-buffered "detail: " | grep -E -- "$KeyNumbers"

相关内容