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

问题描述 投票:0回答:1

所以,我想从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。我已经把一切都运转了,但最后一点。

linux bash shell debian
1个回答
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 
© www.soinside.com 2019 - 2024. All rights reserved.