我正在尝试在bash中编写while
循环,如下所示:
while [!(netstat -pnlt | grep ":9393" | wc -l)];
do
echo "server not ready... waiting..."
sleep 2
done
我得到了
意外令牌`netstat'附近的语法错误
来自控制台
我想做的是:
使用端口9393 grep服务,计算其行数。如果行号为0, 这意味着服务没有运行,所以我会让它等待。
OS:debian:jessie
请帮我纠正一下......我查了很多文件
答案 0 :(得分:2)
您的测试语法不正确。请查看手册页以供使用,或查看整个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
答案 1 :(得分:2)
最好使用lsof
while ! lsof -iTCP:9393 -sTCP:LISTEN >/dev/null; do
echo "server not ready... waiting..."
sleep 2
done