我已经接近完成这项工作,但似乎无法让脚本在成功后结束。它只是重复。
为了测试目的,我只想在 URL 包含字符串“RUNNING”时显示一个对话框。最终,这将是我启动需要服务器准备就绪的客户端的触发器。
为了查看发生了什么,我添加了额外的对话框来显示 $check 的值。
以下是我目前所掌握的信息:
#!/bin/bash
check="false"
webserv="http://localhost:8088/main/system/gwinfo"
Keyword="RUNNING" # enter the keyword for test content
zenity --error --text=$check --title="Warning\!";
until [$check=="true"]
do
zenity --error --text=$check --title="Warning\!";
if curl -s "$webserv" | grep "$Keyword";
then
# if the keyword is in the conent
zenity --error --text="RUNNING\!" --title="Warning\!";
check="true";
fi
done
执行时我看到的是以下对话框:1. false 2. false 3. RUNNING/! 4. true
此后,它只是重复 RUNNING/! & true。until 循环未看到 true。
有任何想法吗?
答案1
我认为既然我可以看到变量没有在循环外被读取,我就需要重新考虑一下。循环的整个目的当然是不断尝试直到服务器启动。所以我简化了整个过程,并在最后一步中退出(如果为真)。
#!/bin/bash
check="false"
webserv="http://localhost:8088/main/system/gwinfo"
Keyword="RUNNING" # enter the keyword for test content
until [$check=="true"]
do
if curl -s "$webserv" | grep "$Keyword";
then
# if the keyword is in the conent
./clientlauncher.sh scope=C project=Edge windowmode=fullscreen
exit
fi
done