繁体   English   中英

如何在bash文件中编写while循环

[英]how to write a while loop in a bash file

我正在尝试在bash中编写一个while循环,如下所示:

while [!(netstat -pnlt | grep ":9393" | wc -l)];
do
    echo "server not ready... waiting..."
    sleep 2
done

我懂了

意外令牌`netstat'附近的语法错误

从控制台

我想做的是:

grep使用端口9393的服务,计算其行数。 如果行号为0,则表示该服务未运行,因此我将使其等待。

操作系统:debian:jessie

请帮我改正...我查了很多文件

您的测试语法不正确。 查看使用手册页或整个Internet上的示例。

while [[ $(netstat -pnlt | grep -c ":9393 .*LISTEN") -eq '1' ]]; do
    echo "server not ready... waiting..."
    sleep 2
done

但是,通过对问题进行的编辑,以下内容会更好:

while ! netstat -pnlt | grep -q ":9393 .*LISTEN"; do
    echo "server not ready... waiting..."
    sleep 2
done

最好使用lsof

while ! lsof -iTCP:9393 -sTCP:LISTEN >/dev/null; do
    echo "server not ready... waiting..."
    sleep 2
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM