读取键盘输入时输出

读取键盘输入时输出

我正在尝试编写一个脚本,该脚本将ssh放入一个盒子中,启动一个需要(由人类)监视成功或失败的进程,然后移至下一个盒子并重复。

我一直在尝试tail -f在进程写入的日志上使用 tail 或,但我还没有找到一种方法让脚本在tail -f运行时读取键盘输入。

理想情况下,我想tail -f记录日志,直到看到过程成功为止,按一个键并让脚本继续,或者如果启动错误并退出脚本,则按另一个键。

这可能吗?

到目前为止我只想出了:

    #!/bin/bash
    kb=""
    until [ "$kb" == "n" ]; do
    tail /var/log/java-app.log
    read -t 1 kb
    done

它大部分都能工作,但很笨拙。我正在启动 java 应用程序,并且有暂停,因此偶尔会重复相同的 10 行,我必须点击enter才能确认n。我真的很想使用tail -f并仍然从键盘读取(最好是2个)不同的变量。这可能吗?

{编辑}
我实际上是这么想的

tail -f /var/log/java-app.log | tee > ( grep -q "YADA YADA" )

是我最好的选择。Ctrl+C如果我发现错误我就可以。

答案1

#! /bin/bash

echo "Starting tail in the background..." 
tail -f input &
pid=$!
trap "kill $pid" EXIT
while true; do
        read kb
        test n = "$kb" && break
done

相关内容