如何从输出到前景的Bash脚本运行无限循环

时间:2018-02-27 16:46:10

标签: linux bash shell debian

所以,我想从bash脚本运行以下命令并将其输出到shell,但是,我的所有尝试都会导致脚本在后台运行:

while [ 1 ]; do timeout -k9 21600 sngrep -c -O "/var/log/sngrep/sngrep_capture_$(date +%F-%H-%M-%S).pcap"; sleep 1; done

当我在shell提示符中直接运行命令时,它会按预期输出。应用程序SNGREP以指定的参数启动并运行良好。

我已尝试将命令发送到Screen,但它仍然在后台结束。我也尝试先通过睡眠修改命令(如下所示):

while sleep 1; do timeout -k9 21600 sngrep -c -O "/var/log/sngrep/sngrep_capture_$(date +%F-%H-%M-%S).pcap"; done

它也会进入后台,但如果我直接在shell提示符下输入它,那么运行正常。当从bash脚本运行时,我还可以尝试将命令输出到前台?感谢任何帮助。谢谢。

PS。 我的最终目标是在Windows批处理文件的Putty窗口中启动SNGREP。我已经完成了所有工作,但最后一点。

1 个答案:

答案 0 :(得分:0)

从您的命令中不清楚它为什么在后台运行,而只应在前台运行。您可以尝试使用以下内容,始终将输出重定向(2>& 1)到标准输出: -

  while [ 1 ]; do timeout -k9 21600 sngrep -c -O "/var/log/sngrep/sngrep_capture_$(date +%F-%H-%M-%S).pcap" 2>&1; sleep 1; done