Linux Bash:循环直到命令退出状态等于0
我在本地机器上安装了netcat,在端口25565上运行服务。使用命令:Linux Bash:循环直到命令退出状态等于0,linux,bash,loops,netcat,Linux,Bash,Loops,Netcat,我在本地机器上安装了netcat,在端口25565上运行服务。使用命令: nc 127.0.0.1 25565 < /dev/null; echo $? nc127.0.0.125565
nc 127.0.0.1 25565 < /dev/null; echo $?
nc127.0.0.125565
Netcat检查端口是否打开,如果打开则返回0,如果关闭则返回1
我正在尝试编写一个bash脚本来无休止地循环,并每隔一秒执行上述命令,直到命令的输出等于0(端口打开)
我当前的脚本只是不停地循环“…”,即使在端口打开之后(1变成0)
直到[“nc 127.0.0.125565
我做错什么了?你可以试试类似的方法
while true; do
nc 127.0.0.1 25565 < /dev/null
if [ $? -eq 0 ]; then
break
fi
sleep 1
done
echo "The command output changed!"
为true时;做
nc 127.0.0.1 25565
保持简单
until nc -z 127.0.0.1 25565
do
echo ...
sleep 1
done
让shell隐式地处理退出状态
shell可以用两种方式处理退出状态(记录在$?
中),显式和隐式
显式:状态=$?
,允许进一步处理
隐含的:
在您的脑海中,对于每个语句,在命令中添加“successed”一词,然后添加
如果
,直到
或而
围绕它们构建,直到短语有意义为止
直到nc
成功;做完成
-z
选项将停止nc
读取stdin,因此不需要
重定向。您实际上没有运行nc命令,它只是一个字符串。只是一个建议,但是您是否尝试过在nc127.0.0.125565
?
until nc -z 127.0.0.1 25565
do
echo ...
sleep 1
done